【问题标题】:GetMetadata to get the full file directory in Azure Data FactoryGetMetadata 获取 Azure 数据工厂中的完整文件目录
【发布时间】:2020-04-17 17:18:11
【问题描述】:

我正在处理一个用例,我想将加载到 Azure 数据库中的所有文件夹名称加载到不同的“控制”表中,但在正确使用 GetMetadata 活动时遇到问题。

此用例的目的是跳过所有旧文件夹(已加载),只关注新文件夹并获取“.gz”文件并将其加载到 Azure 数据库中。哦,高级我想我会使用 GetMetadata 活动将所有文件夹名称发送到存储过程。然后,该存储过程将加载那些状态为“1”(表示成功)的文件夹名称。

然后,该表将在用于将文件加载到数据库中的单独管道中使用。我将使用查找活动来与已加载的文件夹进行比较,如果其中一个不匹配,那么这将是从中获取文件的文件夹(源是 S3 存储桶)。

文件夹结构嵌套在 YYYY/MM/DD 格式中(例如:2019/12/27,每天都会创建一个新文件夹并在其中放置一个“gz”文件)。

我使用“GetMetadata”活动创建了一个 ADF 管道,该活动指向已将文件夹加载到其中的 blob 存储。

但是,当我运行此管道时,我只获得前三个文件夹名称:2019、2018、2017。

是否有可能不仅获得顶级文件夹名称,而且一直向下到日级别?因此,输出不是“2019”,而是“2019/12/26”,然后下一个是“2019/12/27”加上 2017 年和 2018 年的所有月份和日期。

如果有人遇到此问题,我们将不胜感激。

谢谢

【问题讨论】:

    标签: azure-data-factory azure-data-factory-2


    【解决方案1】:

    根据 Get-Metadata Activity 文档中的语句,childItems 仅返回特定路径中的元素,不会包含子文件夹中的项目。

    我认为您必须使用ForEach Activity 逐层循环childItems 数组以展平所有结构。同时使用Set Variable Activity拼接完整的文件夹路径。然后使用IfCondition Activity,当您检测到元素类型是file,而不是folder,您可以调用您在问题中提到的SP。

    【讨论】:

      【解决方案2】:

      在这种情况下,如果您有一个已定义且不变的文件夹结构,您也可以使用通配符占位符。

      用作目录:storageroot / * / * / * / 文件名

      例如我使用了csvFiles / * / * / * / * / * / * / *.csv 获取所有具有这种结构的文件:

      csvFiles / 主题 / 子主题 / 国家 / 年 / 月 / 日

      然后你会得到这个文件夹结构中的所有个文件。

      【讨论】:

        猜你喜欢
        • 2020-06-11
        • 2021-12-12
        • 2022-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-05
        • 2021-09-28
        相关资源
        最近更新 更多