如何在ADF中获取ADLS Gen2静态CSV/Parquet文件行数并传递参数
针对ADLS Gen2中CSV/Parquet文件获取行数的ADF实现方案
一、CSV文件的实现方式
有两种轻量且实用的方案:
1. Lookup活动直接查询
- 配置一个指向目标CSV文件的Azure ADLS Gen2数据集,若文件有表头则勾选“第一行作为标题”。
- 添加Lookup活动,在源设置中切换到“查询”模式,输入统计行数的SQL语句:
(注:无表头的文件请将SELECT COUNT(*) AS total_rows FROM OPENROWSET(BULK '@{dataset().fileName}', FORMAT = 'CSV', FIRSTROW = 2) AS csv_dataFIRSTROW = 2改为1) - 活动执行后,通过表达式
@activity('你的Lookup活动名称').output.firstRow.total_rows即可获取总行数,直接传递给后续活动作为参数。
2. Data Flow聚合统计
- 创建映射数据流,源指向目标CSV文件。
- 添加聚合转换,不设置分组规则,直接添加聚合列
row_count,聚合函数选择count(*)。 - 在数据流设置页启用“单条行输出”,管道中调用该数据流后,可通过
@activity('数据流活动名称').output.runStatus.outputRows获取行数,也可将聚合结果写入临时文件后用Lookup读取。
二、Parquet文件的实现方式
Parquet为列存格式,无法直接用Lookup的简单SQL查询,常用方案如下:
1. Data Flow聚合统计(无依赖通用方案)
- 创建映射数据流,源指向目标Parquet文件(ADLS Gen2数据集)。
- 添加聚合转换,不分组,添加聚合列
row_count,函数选count(*)。 - 启用“单条行输出”,管道调用数据流后,通过
@activity('数据流活动名称').output.runStatus.outputRows获取行数,或把聚合结果写入临时文件后用Lookup读取。
2. Synapse外部表查询(依赖Synapse服务)
- 若ADLS已链接到Azure Synapse Analytics,可创建外部表指向Parquet文件,再用Lookup活动执行
SELECT COUNT(*) AS total_rows FROM external_table,获取行数后传递参数。
三、部署难度对比
- CSV的Lookup方案最易部署:无需额外创建数据流或依赖其他服务,仅需在现有管道中添加Lookup活动,配置好数据集和SQL语句即可完成,调试、维护成本极低。
- Parquet的通用无依赖方案为Data Flow,但需创建数据流、配置聚合转换,步骤比CSV的Lookup多;若用Synapse外部表方式,还需额外配置Synapse链接与外部表,部署复杂度更高。
内容的提问来源于stack exchange,提问作者Smrutiranjan Senapati
相关产品推荐
相关产品推荐

