数据工厂中的数据管道存储事件触发器(预览版)

介绍

调用数据工厂数据管道的常见用例是在文件到达和文件删除等文件事件时触发管道。 对于从 Azure 数据工厂 (ADF) 迁移到 Microsoft Fabric 的客户来说,使用 ADLS/Blog 存储事件很常见。 以前不熟悉 ADF 的新 Fabric 用户通常会使用 OneLake 中的文件事件。 Fabric 数据工厂中的触发器使用 Fabric 平台功能,包括事件流和 Reflex 触发器。 在 Fabric 数据工厂管道设计画布中,有一个“触发器”按钮可为管道创建 Reflex 触发器,你也可直接从 Fabric Activator 体验创建触发器。

注意

存储事件触发器目前为公共预览版。

如何在管道上设置存储事件触发器

  1. 在管道画布编辑器窗口顶部的“主页”功能区上选择“触发器(预览版)”按钮

    显示管道画布编辑器窗口“主页”功能区中“触发器”按钮的屏幕截图。

  2. 此时会打开设置警报面板,可在其中选择 Azure Blob 存储源事件。

    显示“设置警报”窗格的屏幕截图。

  3. 选择“源”,然后选择“事件”以选择要在触发器中侦听的存储事件。

    显示 Blob 存储帐户的 Azure Blob 存储事件连接位置的屏幕截图。

  4. 选择 Azure 订阅和 Blob 存储帐户。

  5. 在你的 Fabric 工作区中会创建一个新的事件流对象,所以务必在“流详细信息”下选择正确的工作区

  6. 选择下一步

  7. 选择事件类型。 可以看到,除了创建的文件和删除的文件之外,你还可以选择更多事件选项。

    显示“触发器配置”对话框的配置事件类型和源页的屏幕截图。

  8. 你可以使用 Subject 字段指定文件夹名称、文件名称、文件类型和容器来筛选事件以匹配文件和文件夹。

    事件具有以下顶级数据:

    属性 类型​​ 说明 示例
    source string 事件源的完整资源路径。 此字段不可写入。 事件网格提供此值。 /subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/my-storage-account
    subject string 事件主题的发布者定义路径。 /blobServices/default/containers/my-file-system/blobs/new-file.txt
    type string 此事件源的一个注册事件类型。 Microsoft.Storage.BlobCreated
    时间 string 基于提供程序 UTC 时间的事件生成时间。 2017-06-26T18:41:00.9584103Z
    id string 事件的唯一标识符。 00000000-0000-0000-0000-000000000000
    data object Blob 存储事件数据。 {{Data object}}
    specversion string CloudEvents 架构规范版本。 1.0

    显示筛选器配置页的屏幕截图。

    注意

    文件名称和文件夹名称是 Subject 字段的一部分。

  9. 返回触发器配置面板,选择工作区以使用项名称将触发器项、管道名称、管道操作和触发器名称存储为 Reflex 项。

  10. 选择“创建”以创建触发器。 现在,触发器已在管道上激活,并对为其定义的存储事件做出回应。

    显示警报创建通知的屏幕截图。

  11. 若要查看触发器,请导航到工作区列表视图,然后从 Fabric 浏览器中按名称查找 Reflex 对象。

  12. 对象的类型为 Reflex

  13. 选择触发器以打开 Reflex 对象进行查看和编辑。

    显示 Reflex 对象详细信息的屏幕截图。

使用触发器文件名称和文件夹名称设置表达式值

在管道中,可以使用内置触发器参数,从存储事件中获取文件名称和文件夹路径。 数据工厂在收到存储事件时会设置这些参数。 Blob 路径和文件名称参数由触发器激活设置。 在管道内的表达式生成器上选择“触发器参数”选项卡,数据工厂会自动解析文件名称和文件夹名称,以便将它们动态添加到管道表达式中。

显示“添加动态内容”对话框的屏幕截图。

这些内置参数是根据到达文件事件的 SubjectTopic 字段设置的,并自动创建,供你在管道逻辑中使用。

@pipeline()?.TriggerEvent?.FileName

你可能会注意到在 pipeline() 对象引用之后使用了 ?,这是管道表达式语言中用于处理 NULL 值的方法。 在测试使用触发器参数的管道时,需要使用此语法,因为在手动测试期间,如未设置文件和文件夹名称参数,则会返回 NULL 值。 但是,从文件事件触发管道时,你会看到这些字段中填写了文件名称和文件夹名称。