在管道运行中引用触发器元数据
适用于:Azure 数据工厂 Azure Synapse Analytics
本文介绍了如何在管道运行中使用触发器元数据(如触发器开始时间)。
管道有时需要理解并从调用它的触发器读取元数据。 例如,通过翻转窗口触发器运行,管道可根据时段开始时间和结束时间处理不同的数据切片或文件夹。 在 Azure 数据工厂中,我们使用参数化和系统变量将元数据从触发器传递到管道。
这种模式对于翻转窗口触发器和自定义事件触发器特别有用,前者提供时段开始时间和结束时间,后者分析和处理自定义数据字段中的值。
注意
不同类型的触发器提供不同的元数据信息。 有关详细信息,请参阅系统变量。
数据工厂 UI
此部分介绍了如何在数据工厂用户界面 (UI) 中将元数据信息从触发器传递到管道。
转到“创作画布”,然后编辑管道。
选择空白画布,以显示管道设置。 不要选择任何活动。 可能需要从画布底部提取设置面板,因为它可能已经折叠。
依次选择“参数”选项卡和“+ 新建”来添加参数。
通过选择“+ 触发器”将触发器添加到管道。
创建触发器或将触发器附加到管道,然后选择“确定”。
选择“确定”后,随即显示另一个“新建触发器”页,其中包含为管道指定的参数列表,如以下屏幕截图所示。 在此页面上,为每个参数填写触发器元数据。 使用系统变量中定义的格式来检索触发器信息。 无需填写所有参数的信息。 只需填写将采用触发器元数据值的参数。 例如,在此示例中,我们将触发器运行开始时间分配给
parameter_1
。若要在管道中使用值,请在管道定义中使用
@pipeline().parameters.parameterName
等参数,而不是系统变量。 例如,在此示例中,为了读取触发器开始时间,我们引用@pipeline().parameters.parameter_1
。
JSON 架构
若要将触发器信息传递到管道运行,触发器和管道 JSON 都需要使用 parameters
部分进行更新。
管道定义
在 properties
部分下,将参数定义添加到 parameters
部分。
{
"name": "demo_pipeline",
"properties": {
"activities": [
{
"name": "demo_activity",
"type": "WebActivity",
"dependsOn": [],
"policy": {
"timeout": "7.00:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"userProperties": [],
"typeProperties": {
"url": {
"value": "@pipeline().parameters.parameter_2",
"type": "Expression"
},
"method": "GET"
}
}
],
"parameters": {
"parameter_1": {
"type": "string"
},
"parameter_2": {
"type": "string"
},
"parameter_3": {
"type": "string"
},
"parameter_4": {
"type": "string"
},
"parameter_5": {
"type": "string"
}
},
"annotations": [],
"lastPublishTime": "2021-02-24T03:06:23Z"
},
"type": "Microsoft.DataFactory/factories/pipelines"
}
触发器定义
在 pipelines
部分下,在 parameters
部分中分配参数值。 无需填写所有参数的信息。 只需填写将采用触发器元数据值的参数。
{
"name": "trigger1",
"properties": {
"annotations": [],
"runtimeState": "Started",
"pipelines": [
{
"pipelineReference": {
"referenceName": "demo_pipeline",
"type": "PipelineReference"
},
"parameters": {
"parameter_1": "@trigger().startTime"
}
}
],
"type": "ScheduleTrigger",
"typeProperties": {
"recurrence": {
"frequency": "Minute",
"interval": 15,
"startTime": "2021-03-03T04:38:00Z",
"timeZone": "UTC"
}
}
}
}
在管道中使用触发器信息
若要在管道中使用值,请在管道定义中使用 @pipeline().parameters.parameterName
等参数,而不是系统变量。
相关内容
有关触发器的详细信息,请参阅管道执行和触发器。