如何基于 Azure 数据工厂中创建的 Blob 执行触发器?

Posted

技术标签:

【中文标题】如何基于 Azure 数据工厂中创建的 Blob 执行触发器?【英文标题】:How to execute a trigger based on Blob created in Azure Data Factory? 【发布时间】:2021-11-30 10:17:08 【问题描述】:

每次创建 Blob 存储时,我都会使用触发器执行管道。有时该过程需要一次执行多个文件,因此我在管道中创建了一个“For Each”活动,如下所示,以便在创建多个 blob 存储时加载数据:

管道的那部分将容器中每个blob的数据上传到SQL数据库,问题就在这里,当我手动执行时一切都很好,但是当触发器执行时,它执行了很多次容器中的 blob 存储数量,并且无论如何都会多次加载数据(下面是触发器配置)。

我做错了什么?无论容器中有多少文件,有没有办法在创建 blob 存储时使用触发器只执行一次管道?

顺便说一句,谢谢,最好的问候。

【问题讨论】:

【参考方案1】:

您的解决方案触发存储事件。所以这部分是有效的。

触发后,它会检索容器中的所有文件并处理该容器中的每个 blob。没有按预期工作。

我认为您在这里有几个选择。您可能想关注this MSFT tutorial,他们使用单个复制活动到接收器。第 11 步显示您必须将 @triggerBody().path 和 @triggerBody().fileName 传递给复制活动。

其他选项是聚合所有 blob 存储事件并使用批处理来执行操作。

我会先尝试简单的一对一处理选项。

【讨论】:

谢谢@Koen,快速提问,在设置图像显示之前,我是否需要在源文件的“参数”部分的参数中设置路径和文件名? 是的,因此您应该在源数据集中定义 2 个额外参数。在示例中,添加了 copyFolder 和 copyFile 以挑选出特定的 blob 文件。

以上是关于如何基于 Azure 数据工厂中创建的 Blob 执行触发器?的主要内容,如果未能解决你的问题,请参考以下文章

无法从在存储帐户的允许子网中创建的 Azure 虚拟机下载 blob

如何从 azure blob 存储中获取 json 数据并使用 azure 数据工厂将其发送到 power apps dataverse

无法在 Azure 数据工厂中创建链接服务

将最新的文件夹从 azure blob 存储加载到 azure 数据工厂

如何使用 azure 数据工厂下载 blob

如何在 Azure 数据工厂中执行 SQL 查询