如何通过管道执行活动将数组作为参数传递给管道?

问题描述 投票:0回答:1

我目前正在开发一个项目,我必须一个接一个地调用几个管道。对于这样的管道,我必须通过管道执行活动传递一组值作为参数。我尝试了几种方法,但我很难获得正确的语法和设置。

这是我迄今为止尝试过的:

  1. 直接在Pipeline Execute活动的参数字段中传递数组,但它似乎将其解释为字符串。

    ["123456", "7891011"]

  2. 使用动态内容创建数组,但我不确定如何正确地将这个数组传递到另一个管道。

    array("123456", "7891011")

以下是我在两种情况下遇到的错误。

Operation on target ForEachBoard failed:
The execution of template action 'MainForEachBoard' failed:
The result of the evaluation of 'foreach' expression '@pipeline().parameters.boards' is of type 'String'.
The result must be a valid array.

这是我当前设置的片段:

            {
                "name": "Execute Updates",
                "type": "ExecutePipeline",
                "dependsOn": [
                    {
                        "activity": "Execute Raw Data",
                        "dependencyConditions": [
                            "Succeeded"
                        ]
                    }
                ],
                "policy": {
                    "secureInput": false
                },
                "userProperties": [],
                "typeProperties": {
                    "pipeline": {
                        "referenceName": "Updates_StageAndLoad",
                        "type": "PipelineReference"
                    },
                    "waitOnCompletion": true,
                    "parameters": {
                        "boards": {
                            "value": "array(\"123456\", \"7891011\")",
                            "type": "Expression"
                        },
                        "stage_foldername": "updates"
                    }
                }
            }

有人可以帮我找出将实际数组作为参数传递的正确方法,以便它可以在子管道中使用吗?我应该对动态内容或整体设置进行哪些更改?

arrays azure-data-factory
1个回答
0
投票

您正在将字符串传递给子管道参数,当您将该参数传递给 For-Each 时,这会导致上述错误。

要实现您的要求,请按照以下步骤操作。

  • 首先,在子管道中创建一个数组参数,并且默认值中不要给出任何值。您可以根据您的要求通过表达式

    @pipeline().parameters.<parameter_name>
    使用此数组参数。

    enter image description here

  • 在父管道中,执行执行管道活动并提供子管道。将表达式

    @createarray(123456,7891011)
    赋予数组参数,如下所示。

    enter image description here

    此表达式创建一个整数数组,如

    [123456,7891011]
    。如果您想要像
    ["123456", "7891011"]
    这样的字符串数组,请使用表达式
    @createarray('123456','7891011')

  • 对于示例管道运行,我已将数组参数赋予子管道中的数组变量。我已经执行了父管道,你可以在子管道运行所需的数组。

    enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.