Azure Data Factory复制数据活动合并文件行顺序混乱求助
解决Azure Data Factory复制数据活动合并文件时的行顺序问题
问题原因
复制数据活动默认会并行读取源文件夹中的文件,不会保证文件的读取顺序,所以合并后的行顺序随机,每次运行结果都可能不同。
解决方案
要实现先较早日期文件夹(A)的所有行、再最新日期文件夹(B)的所有行的合并顺序,可按以下步骤操作:
1. 按日期排序获取目标文件夹列表
- 使用Get Metadata活动,获取源ADLS容器下的所有子项,勾选
Child items选项。 - 用Filter活动筛选出需要合并的A、B两个文件夹。
- 添加Sort活动,根据文件夹的创建/修改日期或名称中的日期字段做升序排序,确保A文件夹排在B文件夹前面。
2. 顺序遍历文件夹并追加数据
- 添加For Each活动,将执行模式改为顺序执行(默认是并行,这是保证顺序的关键),遍历排序后的文件夹列表。
- 在For Each内部嵌套复制数据活动:
- 源数据集:通过动态内容
@item().path绑定当前遍历的文件夹路径,读取该文件夹下所有文件。 - 接收器数据集:指定目标文件,将复制行为设置为
追加模式,确保每次遍历的文件夹数据都追加到目标文件末尾。
- 源数据集:通过动态内容
3. 验证结果
运行管道后,目标文件会先写入A文件夹的所有行,再写入B文件夹的所有行,完全符合预期顺序。
关键注意事项
- 必须将For Each活动设置为顺序执行,否则仍会并行处理文件夹,导致顺序混乱。
- 如果文件夹名称包含可排序的日期格式(如
20240501),直接按名称排序即可;若依赖系统日期字段,在Sort活动中选择对应的日期属性排序。
内容的提问来源于stack exchange,提问作者pandasandnumpy
相关产品推荐
相关产品推荐

