无论创建了多少个 blob,如何只执行一次管道? (Azure 数据工厂)
How to execute a pipeline just once no matter how many blobs are created? (Azure Data Factory)
我创建了一个每次创建 blob 时都由触发器执行的管道,问题是进程需要同时上传多个文件的场景,当它发生时,管道执行为是 blob 数量的很多倍,这会导致数据错误。我试图在主管道中配置复制数据 Activity 以复制创建的每个 blob,但由于此管道位于第一个管道内,因此它也会执行多次。
预期结果是pipeline只执行一次(不管创建多少blob)复制数据activity,能够复制文件夹中的所有blob .
这是我的管道和触发器配置:
下面的复制数据配置:
我已经尝试了几个月,这是我的另一个尝试:
你能告诉我我做错了什么吗?
您可以根据 属性 Filter by last modified
过滤副本 activity 来源,您可以在其中指定 UTC 格式的开始时间和结束时间。
你可以试试这个Incrementally copy new and changed files based on LastModifiedDate by using the Copy Data tool
或...
此处根据您的情况,仅提及开始时间。
- 这个开始时间只不过是最后一次执行触发管道 运行!您可以使用 REST API 调用 Trigger Runs - Query By Factory.
获取触发管道 运行 详细信息
- 现在您可以选择查询最近
x
小时内执行的 运行 或根据您在存储中创建文件的频率来确定最后一天是否安全。
- 接下来,从这个结果中仅收集
triggerRunTimestamp
并附加到数组变量。
- 使用函数查找最大或最后 运行 时间。将此时间设置为 UTC 中的 StartTime,用于复制 activity 源过滤器,如开头所述。
如果可行,我可以旋转一个示例管道。
为什么要将事件触发器映射到创建和上传所有文件的原始路径源?
你不能在最后创建一个带有虚拟文件的虚拟 blob 路径,以便在所有文件都上传后有一个最终触发器来解决这个问题吗?
注意:这就是我们管理它的方式:)但不幸的是生成了一个冗余文件
我创建了一个每次创建 blob 时都由触发器执行的管道,问题是进程需要同时上传多个文件的场景,当它发生时,管道执行为是 blob 数量的很多倍,这会导致数据错误。我试图在主管道中配置复制数据 Activity 以复制创建的每个 blob,但由于此管道位于第一个管道内,因此它也会执行多次。
预期结果是pipeline只执行一次(不管创建多少blob)复制数据activity,能够复制文件夹中的所有blob .
这是我的管道和触发器配置:
下面的复制数据配置:
我已经尝试了几个月,这是我的另一个尝试:
你能告诉我我做错了什么吗?
您可以根据 属性 Filter by last modified
过滤副本 activity 来源,您可以在其中指定 UTC 格式的开始时间和结束时间。
你可以试试这个Incrementally copy new and changed files based on LastModifiedDate by using the Copy Data tool
或...
此处根据您的情况,仅提及开始时间。
- 这个开始时间只不过是最后一次执行触发管道 运行!您可以使用 REST API 调用 Trigger Runs - Query By Factory. 获取触发管道 运行 详细信息
- 现在您可以选择查询最近
x
小时内执行的 运行 或根据您在存储中创建文件的频率来确定最后一天是否安全。 - 接下来,从这个结果中仅收集
triggerRunTimestamp
并附加到数组变量。 - 使用函数查找最大或最后 运行 时间。将此时间设置为 UTC 中的 StartTime,用于复制 activity 源过滤器,如开头所述。
如果可行,我可以旋转一个示例管道。
为什么要将事件触发器映射到创建和上传所有文件的原始路径源? 你不能在最后创建一个带有虚拟文件的虚拟 blob 路径,以便在所有文件都上传后有一个最终触发器来解决这个问题吗?
注意:这就是我们管理它的方式:)但不幸的是生成了一个冗余文件