你好,我有相当多的文件,我想使用Azure数据工厂合并。我目前正在使用联盟活动在埃克塞特洛合并几个文件一次,但我有大约一千个文件,不知道是否有一个更简单的方法来做到这一点?这些文件都放在同一个文件夹中,并且具有相同的列标题我也尝试过使用Copy活动,但这会弄乱接收器数据集中的文件行,所以我现在避免这样做,因为我需要对行进行排序。
relj7zay1#
在ADF中,复制活动或同步合并文件的顺序是随机的。但是如果你的文件在同一个文件夹中,你可以尝试下面的解决方法使用followlow。这些是我的示例文件:
我在每个文件中取了一些样本数据,如下所示:
Id,Name,Age 1,Rakesh,22 2,Laddu,22 3,Virat,34
当你想让数据的顺序和文件的顺序一样时,使用文件名作为排序列。
在数据集中给予路径直到容器,并在通配符路径的低给予您的剩余路径,如以上folder/*.csv。您可以看到随机的源数据预览。
folder/*.csv
但在这里,它并没有改变单个文件中的行顺序。因此,如果我们按filename列对上述数据进行排序,我们可以根据文件名以正确的顺序获得数据。使用排序转换如下。
filename
你可以看到我们得到了正确的顺序。
然后使用选择转换从上面的数据中删除额外的列filename。把这个变成Flume。
Sink文件:
q43xntqr2#
实现合并多个文件的要求的最可行的方法是在复制数据活动中使用“合并文件”复制行为。但是,正如您今天提到的,ADF复制mergeFiles行为无法控制要合并的文件的顺序以及要合并的行的顺序。它随机地考虑数据的副本。为了以有序的方式合并数据,您可以考虑先将数据加载到SQL表中,通过使用foreach按顺序逐个循环文件。请尝试以下步骤:
2条答案
按热度按时间relj7zay1#
在ADF中,复制活动或同步合并文件的顺序是随机的。但是如果你的文件在同一个文件夹中,你可以尝试下面的解决方法使用followlow。
这些是我的示例文件:
我在每个文件中取了一些样本数据,如下所示:
当你想让数据的顺序和文件的顺序一样时,使用文件名作为排序列。
在数据集中给予路径直到容器,并在通配符路径的低给予您的剩余路径,如以上
folder/*.csv
。您可以看到随机的源数据预览。
但在这里,它并没有改变单个文件中的行顺序。因此,如果我们按
filename
列对上述数据进行排序,我们可以根据文件名以正确的顺序获得数据。使用排序转换如下。
你可以看到我们得到了正确的顺序。
然后使用选择转换从上面的数据中删除额外的列
filename
。把这个变成Flume。Sink文件:
q43xntqr2#
实现合并多个文件的要求的最可行的方法是在复制数据活动中使用“合并文件”复制行为。
但是,正如您今天提到的,ADF复制mergeFiles行为无法控制要合并的文件的顺序以及要合并的行的顺序。它随机地考虑数据的副本。
为了以有序的方式合并数据,您可以考虑先将数据加载到SQL表中,通过使用foreach按顺序逐个循环文件。请尝试以下步骤: