如何在ADF中无需Databricks获取ADLS内CSV文件的行数?
在ADF中统计ADLS CSV文件行数的简便方法
方法1:Get Metadata活动+自定义表达式估算
- 先用Get Metadata活动获取CSV文件的
contentLength(总字节数) - 再用Get Metadata活动读取文件首行,算出首行的字节长度(注意编码,比如UTF-8要考虑BOM的影响)
- 用Lookup活动读取10行左右样本,算出平均每行的字节数(也可以直接用首行长度估算,样本法更准确)
- 最后用表达式计算总行数:
div(sub(activity('Get Metadata1').output.contentLength, activity('Get Metadata2').output.firstRowLength), 平均行字节数) + 1(加1是把首行算进去) - 适合不需要绝对精确行数的场景,步骤少,不用跑数据流。
方法2:简化你的数据流方案
你原来的数据流可以砍掉DerivedColumn环节:
- 直接用Source读取CSV文件
- 接Aggregate活动,聚合规则选
count(1)(直接统计所有行,不用额外生成rowcount列) - 最后用Sink把结果缓存或者输出到小文件,后续通过Lookup读取这个统计值
- 比你原来的步骤少一步,更简洁高效。
方法3:Web活动调用ADLS API(小文件适用)
如果你的文件不大,且ADF有ADLS的访问权限:
- 用Web活动调用ADLS Gen2的文件内容获取API,拿到文件文本内容
- 用表达式
length(split(activity('Web1').output, '\n'))统计换行符数量,得到行数 - 注意大文件别用这个,容易内存溢出。
内容的提问来源于stack exchange,提问作者Tharun
相关产品推荐
相关产品推荐

