你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
创建自定义事件触发器以在 Azure 数据工厂中运行管道
适用于: Azure 数据工厂 Azure Synapse Analytics
提示
试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用!
通过 Azure 数据工厂中的事件触发器,你可以根据数据源中发生的特定事件自动执行管道。 这是事件驱动的体系结构的重要功能,可实现实时数据集成和处理。
事件驱动的体系结构是一种常见数据集成模式,其中涉及到事件的生成、检测、消耗和响应。 数据集成方案通常要求 Azure 数据工厂客户在特定事件发生时触发管道。 数据工厂与 Azure 事件网格的原生集成现在涵盖自定义主题。 将事件发送到事件网格主题。 数据工厂订阅主题,侦听并相应地触发管道。
本文中所介绍的集成依赖于 Azure 事件网格。 请确保订阅已注册事件网格资源提供程序。 有关详细信息,请参阅资源提供程序和类型。 你必须能够执行 Microsoft.EventGrid/eventSubscriptions/
操作。 此操作属于 EventGrid EventSubscription 参与者内置角色。
重要
如果在 Azure Synapse Analytics 中使用此功能,请确保订阅也注册到数据工厂资源提供程序。 否则,你会收到一条消息,指出“创建事件订阅失败”。
如果将管道参数与自定义事件触发器组合,则可以在管道运行中分析和引用自定义的 data
有效负载。 由于自定义事件有效负载中的 data
字段是自由格式的 JSON 键值结构,因此你可以控制事件驱动的管道运行。
重要
如果自定义事件有效负载中缺少以参数方式引用的密钥,trigger run
会失败。 你收到一条消息,指出由于 keyName
属性不存在,无法计算表达式的值。 在这种情况下,事件不会触发 pipeline run
。
事件和触发器用例
触发器可由各种事件触发,包括:
创建 Blob:新文件上传到指定容器时。 删除 Blob:文件从容器中删除时。 修改 Blob:现有文件更新时。
你可以使用事件来动态控制管道的执行。 例如,当有新的数据文件上传到 Azure Blob 存储中的“传入”文件夹时,触发器可自动启动管道来处理数据,确保及时集成数据。
在事件网格中设置自定义主题
若要在数据工厂中使用自定义事件触发器,需要先设置事件网格中的自定义主题。
转到事件网格并自行创建主题。 若要详细了解如何创建自定义主题,请参阅事件网格门户教程和 Azure CLI 教程。
注意
工作流不同于存储事件触发器。 此处,数据工厂不会设置主题。
数据工厂预期事件会遵循事件网格事件架构。 请确保事件有效负载具有以下字段:
[
{
"topic": string,
"subject": string,
"id": string,
"eventType": string,
"eventTime": string,
"data":{
object-unique-to-each-publisher
},
"dataVersion": string,
"metadataVersion": string
}
]
使用数据工厂创建自定义事件触发器
转到数据工厂并登录。
切换到“编辑”选项卡。查找铅笔图标。
在菜单上选择“触发器”,然后选择“新建/编辑”。
在“添加触发器”页中选择“选择触发器”,然后选择“+ 新建”。
在“类型”下,选择“自定义事件”。
从 Azure 订阅下拉列表中选择你的自定义主题,或手动输入事件主题范围。
注意
要在数据工厂中创建或修改自定义事件触发器,需要使用具有适当的 Azure 基于角色的访问控制 (Azure RBAC) 的 Azure 帐户。 不需要其他权限。 数据工厂服务主体不需要对事件网格的特殊权限。 有关访问控制的详细信息,请参阅基于角色的访问控制部分。
Subject begins with
和Subject ends with
属性允许筛选触发器事件。 这两个属性都是可选的。使用“+ 新建”添加要筛选的“事件类型”。 自定义事件触发器列表使用 OR 关系。 如果某个自定义事件的
eventType
属性与列表中的属性匹配,则将触发管道运行。 事件类型不区分大小写。 例如,在下面的屏幕截图中,触发器匹配主题以“factories”开头的所有copycompleted
或copysucceeded
事件。自定义事件触发器可以分析自定义
data
数据有效负载,并将其发送到管道。 创建管道参数,然后在“参数”页上填写值。 使用@triggerBody().event.data._keyName_
格式分析数据有效负载,并将值传递给管道参数。有关详细说明,请参见:
输入参数后,选择“确定”。
高级筛选
自定义事件触发器支持高级筛选功能,类似于事件网格高级筛选。 这些条件筛选器允许管道基于事件有效负载的值进行触发。 例如,事件有效负载中可能有一个名为“Department”的字段,管道仅应在“Department”等于“Finance”时触发。 还可以指定复杂的逻辑,例如,date 字段在列表 [1, 2, 3, 4, 5] 中,month 字段不在列表 [11, 12] 中,以及 tag 字段是否包含 [Fiscal Year 2021、FiscalYear2021 或 FY2021]。
截至目前,自定义事件触发器仅支持事件网格中的一部分高级筛选运算符。 支持以下筛选条件:
NumberIn
NumberNotIn
NumberLessThan
NumberGreaterThan
NumberLessThanOrEquals
NumberGreaterThanOrEquals
BoolEquals
StringContains
StringBeginsWith
StringEndsWith
StringIn
StringNotIn
选择“+ 新建”以添加新的筛选条件。
自定义事件触发器还遵循与事件网格相同的限制,例如:
- 每个自定义事件触发器有 5 个高级筛选器,所有筛选器有 25 个筛选器值。
- 每个字符串值有 512 个字符。
in
和not in
运算符的 5 个值。- 键中不能含有
.
(点)字符,例如john.doe@contoso.com
。 目前不支持键中使用转义字符。 - 可以在多个筛选器中使用相同的键。
数据工厂依赖于事件网格 API 的最新正式发布 (GA) 版本。 随着新的 API 版本不断正式发布,数据工厂将扩展其对更多高级筛选运算符的支持。
JSON 架构
下表概述了与自定义事件触发器相关的架构元素。
JSON 元素 | 说明 | 类型 | 允许的值 | 必需 |
---|---|---|---|---|
scope |
事件网格主题的 Azure 资源管理器资源 ID。 | String | Azure 资源管理器 ID | 是的。 |
events |
导致此触发器触发的事件的类型。 | 字符串数组 | 是,至少需要一个值。 | |
subjectBeginsWith |
subject 字段必须以所提供的模式开头,触发器才会触发。 例如,factories 仅会针对以 factories 开头的事件主题引发触发器。 |
字符串 | 否。 | |
subjectEndsWith |
subject 字段必须以所提供的模式结尾,触发器才会触发。 |
字符串 | 否。 | |
advancedFilters |
JSON blob 的列表,每个指定一个筛选条件。 每个 blob 都指定 key 、operatorType 和 values 。 |
JSON blob 的列表 | 否。 |
基于角色的访问控制
数据工厂使用 Azure RBAC 来禁止未经授权的访问。 若要正常工作,数据工厂需要访问权限以执行以下操作:
- 侦听事件。
- 订阅事件更新。
- 触发链接到自定义事件的管道。
若要成功创建或更新自定义事件触发器,需要使用具有相应访问权限的 Azure 帐户登录到数据工厂。 否则,操作将会失败并显示消息“拒绝访问”。
数据工厂不需要对事件网格实例具有特殊权限。 也不需要为操作的数据工厂服务主体分配特殊 Azure RBAC 角色权限。
具体来说,您需要具有 /subscriptions/####/resourceGroups//####/providers/Microsoft.EventGrid/topics/someTopics
的 Microsoft.EventGrid/EventSubscriptions/Write
权限。
- 在数据工厂(例如开发环境)中进行创作时,所登录的 Azure 帐户需要具有以上权限。
- 通过持续集成和持续交付进行发布时,用于将 Azure 资源管理器模板发布到测试或生产工厂的帐户需要具有上述权限。
相关内容
- 获取有关触发器执行的详细信息。
- 了解如何在管道中引用触发器元数据。