我有一个蔚蓝的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容器的过程,无法将文件移动到另一个位置,这使操作更加困难。
请帮助。
答案 0 :(得分:2)
您可以使用ADF event trigger来实现。
将事件触发器定义为“ blob created”,并根据文件名模式指定 blobPathBeginsWith 和 blobPathEndsWith 属性。
对于第一个问题,当针对特定blob触发事件触发器时,该事件将blob的文件夹路径和文件名捕获到属性 @triggerBody()。folderPath 和 @triggerBody()。fileName 。您需要将属性映射到管道参数,并在复制活动中将@ pipeline.parameters.parameterName表达式传递给您的fileName。
这也回答了第二个问题,每次触发触发器时,您都会在 @triggerBody()。folderPath 和 @triggerBody()中获得最新创建的文件的文件名。 .fileName 。 谢谢。
答案 1 :(得分:0)
我了解您的情况。似乎他们已经使用新平台重现了几十年的历史。 :)
我首先要设置的模式类似于:
您的管理层必须了解的警告。您可以非常非常可靠,但是不能保证合规性,因为您与源容器之间没有事务/合同。另外,由于小文件通常可以在处理大文件时进行处理,因此可能存在序列间隙。
如果由于某种原因错过了文件,则只需将其复制到您的容器中即可在其中进行处理。您可以用相同的方式加载所有先前的Blob。