如何使用 ADF 根据文件名称将多个文件重定向到多个文件夹

问题描述 投票:0回答:1

我想知道如何使用 Azure Datafactory 将多个文件重定向到 Data Lake 中的多个文件夹。

例如,我的文件是 bag.csv,然后我可以将其重定向到 Data Lake Gen 2 中的 TotalBags 类型的文件夹中。

请帮我解决这个问题。

需要一个完美的解决方案来解决这个问题

azure azure-data-factory
1个回答
0
投票

例如,我的文件是 bag.csv,那么我可以将其重定向到 Data Lake Gen 2 中的 TotalBags 类文件夹中

为此,首先需要使用“获取元数据”活动获取所有源文件的列表,然后使用 For-each 活动迭代该列表,根据其名称将每个单独的文件复制到其目录。

首先,创建一个二进制数据集,其路径为源文件文件夹,并将其提供给“获取元数据”活动。

enter image description here

这将给出如下文件列表。

"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
作为文件路径。

enter image description here

在目标二进制数据集中,分别使用以下表达式作为文件夹路径和文件路径。

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

enter image description here

将这两个数据集作为 For-each 内复制活动的源数据集和接收器数据集。

enter image description here

现在,调试管道,源文件将被复制到目标文件夹。如果目标文件夹不存在,它将创建。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.