You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Factory中无法查看rowsCopied,如何获取复制行数?

解决ADF二进制复制活动无rowsCopied值的问题

首先明确:二进制数据集是按字节流复制文件,ADF不会解析文件内容结构,所以自然无法统计行数(rowsCopied)。要获取CSV文件的复制记录数,有以下几种可行方案:

方案1:切换数据集为CSV格式(最直接)

  • 将源和接收器数据集的类型从二进制改为CSV,保持容器、文件路径等配置不变,同时根据实际CSV文件设置列分隔符、编码、是否包含表头等参数。
  • 复制活动执行完成后,即可通过表达式@activity('你的复制活动名称').output.rowsCopied获取准确的复制行数。
  • 注意:如果CSV包含表头,务必在数据集的“连接”选项中勾选“第一行作为标题”,避免把表头计入统计行数。

方案2:用Lookup活动预统计源文件行数

如果必须保留二进制复制模式,可通过Lookup活动提前统计源文件行数:

  • 添加一个Lookup活动,源数据集使用CSV格式指向目标文件,关闭“仅查询第一行”选项,在“查询”栏输入SELECT COUNT(*) AS row_count FROM @{dataset()}。
  • 执行Lookup后,将结果存入变量:@activity('Lookup统计行数').output.firstRow.row_count。
  • 复制活动完成后,直接使用这个变量值写入审计表即可。
  • 局限:仅适合中小体积的CSV文件,超大文件会导致Lookup活动性能下降。

方案3:Azure Function流式统计行数(适合大文件)

针对超大CSV文件,用流式读取的方式统计行数更高效:

  • 在复制活动成功完成后,添加一个Azure Function活动,传入源文件的存储账号、容器、文件路径等信息。
  • 在Azure Function中编写代码(比如Python),通过流式读取CSV文件逐行计数(示例逻辑:打开文件流,遍历每一行并累加计数,避免加载全文件到内存)。
  • Function返回统计后的行数,ADF接收该值后,通过Copy活动或Stored Procedure活动写入审计表。

写入审计表的通用步骤

无论采用哪种方式获取行数,都可以通过以下方式写入审计表:

  • 使用Stored Procedure活动:创建一个带参数的存储过程(参数如rows_copied、copy_time、source_path等),在ADF中调用该存储过程并传入对应变量值。
  • 或使用Copy活动:将包含行数、时间等信息的临时数据集(比如用Lookup生成单条记录)复制到审计表中。

内容的提问来源于stack exchange,提问作者sparc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:45:05