Compartir a través de

在管道运行中引用触发器元数据

适用于:Azure 数据工厂 Azure Synapse Analytics

本文介绍了如何在管道运行中使用触发器元数据(如触发器开始时间)。

管道有时需要理解并从调用它的触发器读取元数据。 例如,通过翻转窗口触发器运行,管道可根据时段开始时间和结束时间处理不同的数据切片或文件夹。 在 Azure 数据工厂中,我们使用参数化和系统变量将元数据从触发器传递到管道。

这种模式对于翻转窗口触发器自定义事件触发器特别有用,前者提供时段开始时间和结束时间,后者分析和处理自定义数据字段中的值。

注意

不同类型的触发器提供不同的元数据信息。 有关详细信息,请参阅系统变量

数据工厂 UI

此部分介绍了如何在数据工厂用户界面 (UI) 中将元数据信息从触发器传递到管道。

  1. 转到“创作画布”,然后编辑管道。

  2. 选择空白画布,以显示管道设置。 不要选择任何活动。 可能需要从画布底部提取设置面板,因为它可能已经折叠。

  3. 依次选择“参数”选项卡和“+ 新建”来添加参数。

    显示管道设置的屏幕截图,其中展示了如何在管道中定义参数。

  4. 通过选择“+ 触发器”将触发器添加到管道

  5. 创建触发器或将触发器附加到管道,然后选择“确定”

  6. 选择“确定”后,随即显示另一个“新建触发器”页,其中包含为管道指定的参数列表,如以下屏幕截图所示。 在此页面上,为每个参数填写触发器元数据。 使用系统变量中定义的格式来检索触发器信息。 无需填写所有参数的信息。 只需填写将采用触发器元数据值的参数。 例如,在此示例中,我们将触发器运行开始时间分配给 parameter_1

    显示“触发器运行参数”页的屏幕截图,其中展示了如何将触发器信息传递到管道参数。

  7. 若要在管道中使用值,请在管道定义中使用 @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 等参数,而不是系统变量

有关触发器的详细信息,请参阅管道执行和触发器