【问题标题】:Accessing metadata results in a nested pipeline for Azure Data Factory访问元数据会导致 Azure 数据工厂的嵌套管道
【发布时间】:2020-08-08 13:51:08
【问题描述】:

我构建了一个从 blob 容器子文件夹 raw/子文件夹读取元数据的管道。然后我使用另一个获取元数据任务执行一个 foreach 循环来获取每个子文件夹的数据,它返回以下类型的数据。 /raw/subfolder1/folder1、/raw/subfolder2/folder1、/raw/subfolder2/folder1 等等。我需要另一个 foreach 循环来访问每个文件夹内的文件。问题是你不能在另一个 foreach 循环中运行一个 foreach 循环,所以我不能进一步迭代这些文件。

我有一个调用上述管道然后使用 foreach 的执行数据管道。我的问题是我没有找到将 item().name 从上述迭代传递到我的新管道的方法。看来您不能从上一个管道中传递对象?我如何才能完成这种嵌套的 foreach 元数据收集,以便我可以进一步迭代我的文件?

【问题讨论】:

    标签: azure foreach azure-data-factory


    【解决方案1】:

    您是否尝试过使用参数?下面是它的样子:

    1. 在您的父管道中,单击触发内部(您的新管道)的“执行管道”活动,转到设置并将项目名称指定为参数“名称”。
    2. 在您的内部管道中,单击空白处的任意位置并添加新参数“名称”。
    3. 现在您可以像这样引用该参数:pipeline().parameters.name

    【讨论】:

    • 我在尝试这个时遇到错误 - { "errorCode": "BadRequest", "message": "无法评估表达式 'item().name' 因为属性 'name' 不能selected.", "failureType": "UserError", "target": "ExecutePiplineDetermineFileSize", "details": "" } 我在名称字段中添加了@{item().name} 和@{item().child } 在子字段中。在我从父级执行的子管道中,具有参数:名称设置为字符串,具有空白值子级设置为数组,具有空白值。不知道怎么发图片:(
    • 您所说的大部分情况下实际上都有效,我错的是嵌套管道的方向。一旦我弄清楚了,我就能够正确地传递参数。我像你说的那样在父级中创建了参数,然后在子级中调用这些参数以进入文件结构的下一个级别。
    【解决方案2】:

    正如@Andrii 提到的,使用参数在这种情况下有效。 有关在活动之间传递参数的更多信息,请参阅此链接。 https://azure.microsoft.com/en-in/resources/azure-data-factory-passing-parameters/

    【讨论】:

    • 本文档展示了如何在管道中使用我理解的参数。我现有的管道中有一些非常相似的东西。我从 childItems 的根文件夹中获取元数据。然后我将该信息传递到 foreach 循环中以获取下一层子项。我不能添加另一个 foreach 循环,这是不允许的。因此,我必须创建一个新管道,首先执行另一个管道,然后从另一个管道获取项目和子项目,以便我可以获得每个子文件夹的文件大小。该目录看起来像这样 rootfolder/directory/subdirectory/files。
    猜你喜欢
    • 2019-10-24
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 2023-01-05
    相关资源
    最近更新 更多