設定 Azure Data Factory 和 Azure Synapse Analytics 中的管線傳回值
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
在呼叫管線子管線範例中,您可以使用 [設定變數] 活動,將值從子管線傳回至呼叫管線。 在下列案例中,我們有透過執行管線活動的子管線。 我們想要從子管線擷取資訊,然後在呼叫管線中使用。
引進管線傳回值,這是索引鍵/值組的字典,可允許子管線與父管線之間的通訊。
必要條件 - 呼叫子管線
做為必要條件,您的設計需要呼叫子管線的執行管線活動,並在活動上啟用等候完成。
在子管線中設定管線傳回值
我們擴充了設定變數活動,以包含系統變數管線傳回值。 您不需要在管線層級加以定義 (與您在管線中使用的任何其他變數相反)。
- 在管線 [活動] 窗格中搜尋 [設定變數],然後將 [設定變數] 活動拖曳至管線畫布。
- 在畫布上選取 [設定變數] 活動 (如果尚未選取的話),然後選取其 [變數] 索引標籤來編輯其詳細資料。
- 針對變數類型選擇 [管線傳回值]。
- 選取 [新增] 以新增索引鍵值組。
- 可新增的索引鍵/值組數目僅受限於傳回 JSON 的大小限制 (4 MB)。
實值型別有幾個選項,包括
類型名稱 | 描述 |
---|---|
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 擷取資訊。 使用案例是無限的。 例如,您可以使用
參考管線傳回值時有兩個明顯的圖說文字。
- 使用 [物件] 類型時,您可以進一步擴充至巢狀 json 物件,例如 @activity('Execute Pipeline1').output.pipelineReturnValue.keyName.nextLevelKey
- 使用 [陣列] 類型,您可以使用 @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), '"', '}' ) }
相關內容
了解其他相關的控制流程活動: