提问人:Bindu 提问时间:11/15/2023 最后编辑:AswinBindu 更新时间:11/16/2023 访问量:121
将 CSV 从 adls 复制到 adls 在 adf 管道中不起作用
Copying CSV from adls to adls not working in adf pipeline
问:
我想通过 adf 管道复制活动将名为 source 的 adlsfolder 中存在的 CSV 文件复制到另一个名为 destination 的 adls 文件夹。
第一个活动 = GetMetadata,用于从源文件夹中获取所有文件。
第二个活动 = foreach 遍历文件
在第二个活动中 = 从源复制到目标的复制活动。
我的源数据集正确指向源文件夹,并且与输出数据集相同。
我在目标中使用与源 adls 中相同的文件名。
即使运行管道后没有错误,但源文件中存在的数据在目标文件中不存在。
文件名在目标和源中正确出现,这是我想要的。
但数据不正确。
例如,假设我在源代码中有 5 个文件,如下所示:
- Classone_00000.csv
- Classone_00001.csv
- Classtwo_00000.csv
- Classtwo_00001.csv
- Classtwo_00003.csv
我正在使用分区,并且提到每个文件有 5 行。
在目标中,我仍然拥有所有 5 个文件名相同的文件,但数据不正确。就我而言classone_00000.csv数据将存在于所有其他 4 个文件中,如果源文件中有 5 行,则我的目标文件中只有 4 个文件。
我无法弄清楚为什么会发生这种情况。
我尝试过使foreach是顺序的而不是顺序的,但似乎没有任何效果。
我只想将 adls 源文件夹中的数据准确复制到 adls 目标文件夹。
答:
在您的方法中,复制活动将在每次迭代中提供所有源文件,对于每个目标文件,最后一个源文件数据将被覆盖到目标文件中。这可能是导致数据不正确的原因。
为了满足您的要求,无需使用循环。可以对管道中的单个复制活动执行相同的操作。
在源数据集中提供容器的路径,并在复制活动源数据集中提供通配符路径。
在目标数据集中,提供目标文件夹位置的路径。不要提供任何文件路径。
将其提供给复制活动接收器。
执行管道,源位置中的所有文件都将复制到目标位置。
评论
@item().name
@concat(split(item().name,'.')[0],'_new','.csv')
@item()
评论