如何基于 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