我有一个 azure blob 容器,其中每 6 小时放置一些包含数据的 json 文件,我想使用 Azure 数据工厂将其复制到 Azure SQL DB。文件的文件模式如下所示:"customer_year_month_day_hour_min_sec.json.data.json">
blob 容器还具有其他 json 数据文件,因此我筛选了数据集中的文件。
第一个问题是如何将 blob 数据集上的文件路径设置为仅查找所需的 json 文件?我尝试使用通配符 *.data.json,但这不起作用。我工作的唯一文件名通配符是 *.json
第二个问题是,如何仅将数据从位于 Blob 存储中的新文件(具有特定文件模式(复制到 Azure SQL?我无法控制将数据放入 blob 容器的过程,也无法将文件移动到另一个位置,这使得它更加困难。
请帮忙。
可以使用 ADF 事件触发器来实现此目的。
将事件触发器定义为"已创建 blob",并根据文件名模式指定blobPathBeginsWith和blobPathEndsWith属性。
对于第一个问题,当针对特定 Blob 触发事件触发器时,该事件会将 Blob 的文件夹路径和文件名捕获到属性 @triggerBody((.folderPath 和 @triggerBody((.fileName中。您需要将属性映射到管道参数,并将 @pipeline.parameters.parameterName 表达式传递给复制活动中的文件名。
这也回答了第二个问题,每次触发触发器时,您都会在@triggerBody((.folderPath和@triggerBody((.文件名中获得最新创建的文件的文件名。 谢谢。
我理解你的情况。 似乎他们已经使用了一个新平台来重现一个几十年前的问题。:)
我首先设置的模式如下所示:
- 创建一个存储帐户触发器,该触发器将在源容器中的每个新文件上触发。
- 在触发的管道中,检查博客名称以查看其是否符合参数。 如果没有,就结束,不采取任何行动。 如果是这样,请将 Blob 二进制复制到应用拥有的帐户/容器,保留原始 Blob。
- 在运行导入管道的容器上创建另一个触发器。
- 运行导入过程。
您的管理层必须了解的几个警告。 您可以非常非常可靠,但不能保证合规性,因为您和源容器之间没有交易/合同。 此外,可能存在序列间隙,因为小文件通常可以处理,而较大的文件正在处理。
如果由于任何原因您确实错过了文件,您需要做的就是将其复制到您的容器中,您的进程将在那里拾取它。 可以以相同的方式加载所有以前的 Blob。