繁体   English   中英

Azure 数据工厂:存储事件触发器的动态路径值

[英]Azure Data Factory: Dynamic path value for the Storage Event Trigger

我创建了一个 azure 数据工厂管道,使用复制数据活动将数据从一个 adls 容器复制到另一个 adls 容器。 此复制活动将使用存储事件触发器触发。

因此,无论何时生成新文件,它都会触发该活动。
源文件位于一个嵌套的目录结构中,该目录结构具有动态文件夹,例如年、月和日,这些文件夹随日期而变化。

在触发器中,我提到了固定文件夹路径之前的路径,但我不知道应该为动态路径设置什么值。
最初,我提供了诸如my/fixed/directory/*/*/*/之类的路径,
但在执行时,它会抛出异常“PathNotFound”。

所以我的问题是 - 如何使用动态文件夹结构提供存储事件触发器的路径? 以下是 ADF 复制数据管道屏幕截图:
管道- 在此处输入图像描述

复制数据活动源配置- 在此处输入图像描述

复制数据活动目标配置- 在此处输入图像描述

复制数据活动源数据集配置- 在此处输入图像描述

复制数据活动目标数据集配置- 在此处输入图像描述

存储事件配置- 在此处输入图像描述

  • 存储事件触发器中的blob path begins withblob path ends with为不支持通配符。
  • 但是,在固定父目录上创建存储事件触发器也会触发在子目录中创建/删除的任何文件的管道。
  • 假设我有如下所示的文件夹结构,其中input/folder/2022是我的固定目录(输入是容器名称)。 我还在下面显示的每个文件夹中都有子文件夹。

在此处输入图像描述

  • 现在,我已经创建了一个复制数据活动。 源数据集的文件夹名和文件名动态内容如下所示(参数值将从管道传递):
folder path:  @replace(dataset().folder_name,'input/','')

file name:  @dataset().file_name

在此处输入图像描述

  • sink数据集的文件夹名和文件名动态内容如下所示。 这是一个名为data的不同容器:
folder path: @concat('output/',replace(dataset().folder,'input/folder/',''))

file name: @dataset().file

在此处输入图像描述

  • 配置复制活动完成后,创建存储事件触发器。

在此处输入图像描述

  • 在这里,管道参数folderNamefileName的值将在创建触发器时设置,如下所示:
fileName : @triggerBody().fileName
folderName : @triggerBody().folderPath

在此处输入图像描述

  • 在附加触发器并创建管道后,只要有任何文件上传到固定目录folder/2022中的任何文件夹,管道就会被触发。
  • 我已将文件上传到folder/2022/03/01/sample1.csv 这成功触发了管道。

在此处输入图像描述

  • 该文件也已成功复制。 以下是供参考的图像:

在此处输入图像描述

因此,仅为父目录创建存储事件触发器就足以触发上传到子目录的任何文件的管道。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM