共用方式為


設定 Azure Data Factory 和 Azure Synapse Analytics 中的管線傳回值

適用於:Azure Data Factory Azure Synapse Analytics

提示

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

在呼叫管線子管線範例中,您可以使用 [設定變數] 活動,將值從子管線傳回至呼叫管線。 在下列案例中,我們有透過執行管線活動的子管線。 我們想要從子管線擷取資訊,然後在呼叫管線中使用。

ExecutePipeline 活動的螢幕擷取畫面。

引進管線傳回值,這是索引鍵/值組的字典,可允許子管線與父管線之間的通訊。

必要條件 - 呼叫子管線

做為必要條件,您的設計需要呼叫子管線的執行管線活動,並在活動上啟用等候完成

將 ExecutePipeline 活動設定為等候完成的螢幕擷取畫面。

在子管線中設定管線傳回值

我們擴充了設定變數活動,以包含系統變數管線傳回值。 您不需要在管線層級加以定義 (與您在管線中使用的任何其他變數相反)。

  1. 在管線 [活動] 窗格中搜尋 [設定變數],然後將 [設定變數] 活動拖曳至管線畫布。
  2. 在畫布上選取 [設定變數] 活動 (如果尚未選取的話),然後選取其 [變數] 索引標籤來編輯其詳細資料。
  3. 針對變數類型選擇 [管線傳回值]
  4. 選取 [新增] 以新增索引鍵值組。
  5. 可新增的索引鍵/值組數目僅受限於傳回 JSON 的大小限制 (4 MB)。

此螢幕擷取畫面顯示管線傳回值的 UI。

實值型別有幾個選項,包括

類型名稱 描述
String 常數字串值。 例如:'ADF is awesome'
運算式 其可讓您參考先前活動的輸出。 您可以使用這裡的字串內插補點來包含內嵌運算式值,例如 "The value is @{guid()}"
陣列 其會預期字串值的陣列。 按「Enter」鍵以分隔陣列中的值
布林值 True 或 False
Null 訊號位置預留位置狀態;值為常數 null
int 整數類型的數值。 例如:42
Float 浮點數類型的數值。 例如:2.71828
Object 警告複雜的使用案例。 其可讓您內嵌值的索引鍵/值組類型清單

物件類型的值定義如下:

[{"key": "myKey1", "value": {"type": "String", "content": "hello world"}}, 
 {"key": "myKey2", "value": {"type": "String", "content": "hi"}}
]

擷取呼叫管線中的值

子管線的管線傳回值會成為執行管線活動的活動輸出。 您可以使用 @activity('Execute Pipeline1').output.pipelineReturnValue.keyName 擷取資訊。 使用案例是無限的。 例如,您可以使用

顯示呼叫管線的螢幕擷取畫面。

參考管線傳回值時有兩個明顯的圖說文字。

  1. 使用 [物件] 類型時,您可以進一步擴充至巢狀 json 物件,例如 @activity('Execute Pipeline1').output.pipelineReturnValue.keyName.nextLevelKey
  2. 使用 [陣列] 類型,您可以使用 @activity('Execute Pipeline1').output.pipelineReturnValue.keyName[0] 指定清單中的索引。 數字為零索引,表示其開頭為 0。

注意

請確定您參考的 keyName 存在於子管線中。 ADF 運算式建立器無法為您確認引用檢查。 如果承載中遺漏參考的金鑰,管線將會失敗

特殊考量

  • 雖然您可以在管線中包含多個「設定管線傳回值」活動,但請務必確保管線中僅執行其中一個活動。

    管線傳回值和分支的螢幕擷取畫面。

    為避免發生前述的在呼叫管線遺漏索引鍵的問題,建議您讓子管線中的所有分支擁有相同的索引鍵清單。 請考慮針對特定分支中沒有值的金鑰使用 Null 類型。

  • Azure Data Factory 運算式語言不支援內嵌 JSON 物件。 相反地,必須正確地串連字串和表達式。

    例如,針對下列 JSON 運算式:

    {
      "datetime": "@{utcnow()}",
      "date": "@{substring(utcnow(),0,10)}",
      "year": "@{substring(utcnow(),0,4)}",
      "month": "@{substring(utcnow(),5,2)}",
      "day": "@{substring(utcnow(),8,2)}"
    }
    

    對等的 Azure Data Factory 運算式會是:

    @{
      concat(
        '{',
        '"datetime": "', utcnow(), '", ',
        '"date": "', substring(utcnow(),0,10), '", ',
        '"year": "', substring(utcnow(),0,4), '", ',
        '"month": "', substring(utcnow(),5,2), '", ',
        '"day": "', substring(utcnow(),8,2), '"',
        '}'
      )
    }
    

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