gpt4 book ai didi

azure - 使用 Azure 数据工厂管道从 Blob 存储中获取元数据 "folder like structure"

转载 作者:行者123 更新时间:2023-12-03 06:58:37 25 4
gpt4 key购买 nike

我就开门见山吧。这就是问题所在:

我有一个包含 Blob 存储的 Azure 存储帐户,其中有多个容器。在这些容器中,我确实有一个由目录和子目录组成的“类似文件夹的结构”(我想这将是它的正确术语,因为在数据集中,我确实在容器后面有带有“目录”的字段,正如您可以在图片。 Screenshow from Azure with Container->Directory->File

结构如下(为了简单起见,我将其缩短但仍然具有代表性): Structure of data storage - Container->Years->Months->CSVDocs

我需要从 CSV 文件中获取元数据(特别是文件名),以便我可以向管道添加其他逻辑,以便它知道要复制哪些文件。获取这些文件名的最佳解决方案是什么?

我尝试使用 For Each 语句。首先,我创建了 Dateset,其中仅指定了容器名称,并在“获取元数据”事件中使用了它,在该事件中我以年份列表的形式获得了输出(我列出了子项目)。然后我创建了另一个数据集,但这次参数化,我将目录定义为 @dataset().FileName (我没有定义文件名)。我在 For Each 循环中使用此数据集和 Get Matadata 事件,在其中我能够获取月份数列表,就像您在上面的文件结构中看到的那样。然后我继续创建第三个数据集(我认为这已经很愚蠢,但我试了一下),我想在目录字段中包含两个将连接的参数。这里我发现我无法在另一个数据集中使用以前数据集的参数。所以我想也许我可以使用变量...我也无法使用它,因为每次我想在“添加动态内容”中使用变量时都会出错。因此,然后我尝试使用仅定义容器和文件名的数据集,但最终仅获得数据集级别文件名设置的默认值的结果。

Current structure of pipeline in ADF

由于我对 ADF 和创建管道还很陌生,所以我想知道我错过了什么。您建议的解决方案是什么来获取 CSV 文档的文件名,以便我稍后可以在管道中使用它们?

最佳答案

我通过使用执行管道事件迭代 For Each 事件内的多个子文件夹进行了重现。

源数据集:

为源创建数据集并添加数据集参数以动态传递值。

enter image description here

主要管道:

  1. 使用获取元数据事件获取给定容器内的文件夹。

enter image description here

enter image description here

  • 将子项传递给 ForEach 事件。在 ForEach 内,添加执行管道以调用另一个管道来获取每个当前项目的子文件夹 (@item().name)。
  • enter image description here

    子管道1(获取子文件夹):

    1. 在子管道中,创建管道参数以从父管道获取当前项目名称(主文件夹名称)。

    enter image description here

  • 使用获取元数据事件获取子文件夹列表。使用数据集中的参数。
  • 数据集属性值:@concat(pipeline().parameters.dir1,'/')

    enter image description here

    enter image description here

  • 将子项传递给 ForEach 事件。在 ForEach 内部,您可以根据需要使用过滤器事件来过滤掉子文件夹名称。然后传递所需的当前项目来执行管道事件以调用子管道(从每个子文件夹获取文件)。从这里传递子管道参数值。
  • @concat(pipeline().parameters.dir1,'/',item().name,'/')

    enter image description here

    子管道2(获取文件和进程):

    1. 创建管道参数以从其父管道获取值。

    enter image description here

  • 使用“获取元数据”事件,通过将参数值传递给数据集参数来获取每个子文件夹中的文件。
  • enter image description here

    enter image description here

  • 将输出子项传递给 ForEach 事件。在 ForEach 内部,您可以使用过滤器事件来过滤掉文件。

  • 使用复制数据事件可以将所需的文件复制到接收器。

  • 数据集属性:

    目录 - @concat(pipeline().parameters.path,'/',item().name)

    enter image description here

    关于azure - 使用 Azure 数据工厂管道从 Blob 存储中获取元数据 "folder like structure",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72688135/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com