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

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

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

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

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

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

注意

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

数据工厂 UI

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

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

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

  3. 依次选择“参数”部分和“+ 新建”来添加参数

    Screen shot of pipeline setting showing how to define parameters in pipeline.

  4. 单击“+ 触发器”,以将触发器添加到管道中。

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

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

    Screenshot of trigger definition page showing how to pass trigger information to pipeline parameters.

  7. 若要在管道中使用值,请在管道定义中使用参数 @pipeline().parameters.parameterName,而不是系统变量。 例如,在此示例中,为了读取触发器开始时间,我们将引用 @pipeline().parameters.parameter_1。

JSON 架构

若要将触发器信息传递到管道运行,触发器和管道 json 都需要使用“参数”部分进行更新。

管道定义

在“属性”部分下,将参数定义添加到“参数”部分中

{
    "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"
}

触发器定义

在“管道”部分下,将参数值分配到“参数”部分中。 不需要为所有参数都填写信息,只需为包含触发器元数据值的参数填写信息。

{
    "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,而不是系统变量。

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