Azure数据工厂,如何将blob数据增量复制到sql

时间:2018-08-16 07:31:02

标签: azure-data-factory azure-data-factory-2

我有一个蔚蓝的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容器的过程,无法将文件移动到另一个位置,这使操作更加困难。

请帮助。

2 个答案:

答案 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)

我了解您的情况。似乎他们已经使用新平台重现了几十年的历史。 :)

我首先要设置的模式类似于:

  1. 创建一个存储帐户触发器,该触发器将在源容器中的每个新文件上触发。
  2. 在触发的管道中,检查博客名称以查看它是否适合您的参数。如果否,则结束,不采取任何措施。如果是这样,请将二进制文件二进制复制到您的应用拥有的帐户/容器中,而将原始文件保留在原处。
  3. 在运行导入管道的容器上创建另一个触发器。
  4. 运行您的导入过程。

您的管理层必须了解的警告。您可以非常非常可靠,但是不能保证合规性,因为您与源容器之间没有事务/合同。另外,由于小文件通常可以在处理大文件时进行处理,因此可能存在序列间隙。

如果由于某种原因错过了文件,则只需将其复制到您的容器中即可在其中进行处理。您可以用相同的方式加载所有先前的Blob。

相关问题