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

ADF管道中ADLS间CSV文件复制数据异常问题排查

ADF复制ADLS文件时数据异常(重复/行数缺失)的排查与解决

核心问题定位

你遇到的问题大概率是Copy Activity未动态绑定当前遍历的文件名,导致每次迭代都读取整个源文件夹的文件并合并写入,同时CSV格式配置不一致导致行数缺失。以下是具体排查和解决步骤:

1. 修正GetMetadata与Foreach的关联

  • 确认GetMetadata活动仅获取文件:在Field list中只勾选Child Items,并确保输出的childItems里仅包含目标CSV文件(无文件夹)。
  • 验证Foreach的Items参数为@activity('GetMetadata').output.childItems,确保遍历的是正确的文件列表。

2. 动态绑定源/目标数据集的文件名

这是解决数据重复的关键:

  • 源数据集:进入数据集的Connection标签,将File name设置为动态内容@item().name,确保每次Copy Activity只读取当前遍历的单个文件,而非整个文件夹的所有文件。
  • 目标数据集:同样将File name设置为动态内容@item().name,保证每个源文件对应写入同名的目标文件,避免覆盖或合并。

3. 统一CSV格式配置

解决行数缺失问题:

  • 检查源和目标数据集的CSV格式设置,确保First row as header选项保持一致(同时开启或关闭)。如果源文件包含表头,开启该选项后,ADF会将第一行识别为表头,不会计入数据行数;若目标数据集未开启,会导致表头被当作数据行,或者丢失一行数据。
  • 关闭Copy Activity的Skip incompatible rows选项(在Settings标签),避免ADF自动跳过行导致行数缺失。

4. 验证Copy Activity的运行细节

  • 查看每个Foreach迭代中Copy Activity的运行日志,对比Source data read和Destination data written的行数,确认与源文件实际行数匹配。
  • 关闭Copy Activity的Recursively选项(源设置中),避免读取源文件夹下的子文件夹内容。

5. 简化方案:直接批量复制(无需遍历)

其实不需要GetMetadata+Foreach的复杂流程,直接用单个Copy Activity即可完成批量复制:

  • 源数据集指向source文件夹,File name设为*(或留空)。
  • 目标数据集指向destination文件夹,Copy behavior选择Preserve hierarchy。
  • 该配置会自动复制源文件夹下所有文件到目标文件夹,保持文件名和结构完全一致,避免遍历逻辑带来的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:32:23