我想知道如何使用 Azure Datafactory 将多个文件重定向到 Data Lake 中的多个文件夹。
例如,我的文件是 bag.csv,然后我可以将其重定向到 Data Lake Gen 2 中的 TotalBags 类型的文件夹中。
请帮我解决这个问题。
需要一个完美的解决方案来解决这个问题
例如,我的文件是 bag.csv,那么我可以将其重定向到 Data Lake Gen 2 中的 TotalBags 类文件夹中
为此,首先需要使用“获取元数据”活动获取所有源文件的列表,然后使用 For-each 活动迭代该列表,根据其名称将每个单独的文件复制到其目录。
首先,创建一个二进制数据集,其路径为源文件文件夹,并将其提供给“获取元数据”活动。
这将给出如下文件列表。
"childItems": [
{
"name": "bag.csv",
"type": "File"
},
{
"name": "bag.json",
"type": "File"
},
{
"name": "book.csv",
"type": "File"
},
{
"name": "book.json",
"type": "File"
}
]
将此 ChildItems 数组
@activity('Get Metadata1').output.childItems
赋予 For-each 活动。
在 For-each 内,使用两个新的二进制数据集进行复制活动,其中一个用于源文件,另一个用于目标位置。
在源二进制数据集中,给出动态表达式
@item().name
作为文件路径。
在目标二进制数据集中,分别使用以下表达式作为文件夹路径和文件路径。
Folder path - @concat('Total',toUpper(first(item().name)),substring(split(item().name,'.')[0],1,add(length(split(item().name,'.')[0]),-1)),'s')
filepath - @item().name
将这两个数据集作为 For-each 内复制活动的源数据集和接收器数据集。
现在,调试管道,源文件将被复制到目标文件夹。如果目标文件夹不存在,它将创建。