无论创建了多少个 blob,如何只执行一次管道? (Azure 数据工厂)

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

我创建了一个每次创建 blob 时都由触发器执行的管道,问题是进程需要同时上传多个文件的场景,当它发生时,管道执行的次数与blob 的数量,这会导致数据错误。我试图在主管道中配置一个复制数据活动,以便复制创建的每个 blob,但由于该管道位于第一个管道内,因此它也执行了很多次。

预期的结果是管道只执行一次(不管创建了多少个blob)和复制数据活动,能够复制文件夹中的所有blob。

你能告诉我我做错了什么吗?

azure azure-blob-storage azure-data-factory azure-data-factory-2 azure-triggers
2个回答
1
投票

您可以做的是根据属性

Filter by last modified
过滤复制活动源,您可以在其中指定UTC的开始时间和结束时间。

你可以试试这个使用复制数据工具根据 LastModifiedDate 增量复制新的和更改的文件

或...

根据您的情况,只需提及开始时间。

  1. 这个开始时间只不过是最后一次执行触发管道运行的时间!您可以使用 REST API 调用 Trigger Runs - Query By Factory.
  2. 获取触发管道运行的详细信息
  3. 现在您可以根据在存储中创建文件的频率来选择查询在过去
    x
    小时内执行的运行或在最后一天是安全的。
  4. 接下来,从这个结果中只收集
    triggerRunTimestamp
    并附加到数组变量。
  5. 使用函数查找最大或上次运行时间。将此时间设置为 UTC 中的StartTime,用于复制活动源过滤器,如开始时所述。

如果这是可行的,我可以旋转一个示例管道。


0
投票

为什么要将事件触发器映射到创建和上传所有文件的原始路径源? 你不能在最后用一个虚拟文件创建一个虚拟 blob 路径,以便在所有文件都上传后有一个最终触发器来解决这个问题吗?

注意:这就是我们管理它的方式:)但不幸的是生成了一个冗余文件

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