Azure Data Factory 和 Azure Synapse Analytics 中的設定變數活動

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費啟動新的試用版

使用 [設定變數] 活動,針對 Data Factory 或 Synapse 管線中所定義的「字串」、「布林」或「陣列」類型設定現有變數值,或設定管線傳回值 (預覽)。

使用 UI 來建立設定變數活動

若要在管線中使用「設定變數」活動,請完成下列步驟:

  1. 選取管線畫布的背景,並使用 [變數] 索引標籤來新增變數:

Screenshot of an empty pipeline canvas with the Variables tab selected with an array type variable named TestVariable.

  1. 在管線 [活動] 窗格中搜尋 [設定變數],然後將 [設定變數] 活動拖曳至管線畫布。

  2. 在畫布上選取 [設定變數] 活動 (如果尚未選取的話),然後選取 [設定] 索引標籤來編輯其詳細資料。

  3. 針對 [變數類型],選取 [管線變數]

  4. 選取 Name 屬性的變數。

  5. 輸入運算式以設定變數的值。 此運算式可以是常值字串運算式,或是任何動態運算式、函式系統變數其他活動輸出的組合。

Screenshot of the UI for a Set variable activity.

使用 UI 來設定管線傳回值

在下列情節中,我們已展開 [設定變數] 活動以包括名為 [管線傳回值] 的特殊系統變數,其允許從子管線到通話管線的通訊。

使用變數之前,您不需要定義變數。 如需詳細資訊,請參閱管線傳回值

Screenshot with ExecutePipeline Activity.

類型屬性

屬性 描述 必要
NAME 管線中的活動名稱
description 說明活動用途的文字
type 必須設為 [SetVariable]
variableName 此活動所設定的變數名稱
value 變數所指派至的字串常值或運算式物件值

遞增變數

涉及變數的常見情節是在 UntilForEach 活動內使用變數作為迭代器。 在 [設定變數] 活動中,您無法參考要在 value 欄位中設定的變數,即自我參考。 若要解決此限制,請設定暫存變數,然後建立第二個 [設定變數] 活動。 第二個 [設定變數] 活動會將迭代器的值設定為暫存變數。 以下是此模式的範例:

  • 首先,您定義兩個變數:一個用於迭代器,另一個用於暫存記儲存體。

Screenshot shows defining variables.

  • 然後,您使用兩個活動來遞增值

Screenshot shows increment variable.

{
    "name": "pipeline1",
    "properties": {
        "activities": [
            {
                "name": "Increment J",
                "type": "SetVariable",
                "dependsOn": [],
                "policy": {
                    "secureOutput": false,
                    "secureInput": false
                },
                "userProperties": [],
                "typeProperties": {
                    "variableName": "temp_j",
                    "value": {
                        "value": "@add(variables('counter_i'),1)",
                        "type": "Expression"
                    }
                }
            },
            {
                "name": "Set I",
                "type": "SetVariable",
                "dependsOn": [
                    {
                        "activity": "Increment J",
                        "dependencyConditions": [
                            "Succeeded"
                        ]
                    }
                ],
                "policy": {
                    "secureOutput": false,
                    "secureInput": false
                },
                "userProperties": [],
                "typeProperties": {
                    "variableName": "counter_i",
                    "value": {
                        "value": "@variables('temp_j')",
                        "type": "Expression"
                    }
                }
            }
        ],
        "variables": {
            "counter_i": {
                "type": "Integer",
                "defaultValue": 0
            },
            "temp_j": {
                "type": "Integer",
                "defaultValue": 0
            }
        },
        "annotations": []
    }
}

變數的範圍是管線層級。 這表示它們不具執行緒安全性,而且如果從平行反覆運作活動 (例如 foreach 迴圈) 進行存取,特別是當該值也在該 foreach 活動內修改時,可能會造成非預期和不想要的行為。

了解其他相關的控制流程活動: