將已對應的資料流參數化
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
Azure Data Factory 和 Synapse 管線中的對應資料流支援使用參數。 定義資料流程定義內的參數,並在整個運算式中使用這些參數。 參數值是呼叫管線透過 [執行資料流程] 活動所設定的。 在資料流程活動運算式中設定值時,您有三個選項:
- 使用管線控制流程運算式語言來設定動態值
- 使用資料流程運算式語言來設定動態值
- 使用任一種運算式語言來設定靜態常值
使用此功能讓您的資料流程具有一般用途、彈性且可重複使用。 您可以使用下列參數,將資料流程設定和運算式參數化。
在對應資料流中建立參數
若要將參數新增至資料流程,請按一下資料流程畫布的空白部分,以查看一般屬性。 在設定窗格中,您會看到稱為 [參數] 的索引標籤。 選取 [新增] 以產生新的參數。 針對每個參數,您必須指派名稱、選取類型,另可選擇設定預設值。
在對應資料流中使用參數
可在任何資料流程運算式中參考參數。 參數以 $ 開頭且不可變。 您可以在 [參數] 索引標籤下的運算式產生器內找到可用的參數清單。
您可以選取 [新增參數] 並指定名稱和類型,以快速新增其他參數。
在對應對應資料流中使用參數化連結服務
參數化連結服務可使用於對應資料流 (資料集或內嵌來源類型)。
針對內嵌來源類型,連結服務參數會在管線內的資料流程活動設定中公開,如下所示。
針對資料集來源類型,連結服務參數會直接公開在資料集設定中。
從管線指派參數值
一旦建立了具有參數的資料流程,您就可以使用 [執行資料流程] 活動,從管線執行該資料流程。 在將活動新增至管線畫布之後,會在活動的 [參數] 索引標籤中呈現可用的資料流程參數。
指派參數值時,您可以根據 Spark 類型使用管線運算式語言或資料流程運算式語言。 每個對應資料流都可以具有管線和資料流程運算式參數的任何組合。
管線運算式參數
管線運算式參數可讓您參考系統變數、函式、管線參數,以及類似其他管線活動的變數。 當您按一下 [管線運算式] 時,側邊導覽即會開啟,讓您可以使用運算式產生器輸入運算式。
參考時,會評估管線參數,然後在資料流程運算式語言中使用其值。 管線運算式類型不需要符合資料流程參數類型。
字串常值與運算式
指派字串類型的管線運算式參數時,預設會加上引號,並將值評估為常值。 若要將參數值讀取為資料流程運算式,請檢查參數旁邊的運算式方塊。
如果資料流程參數 stringParam
參考值為 upper(column1)
的管線參數。
- 如果檢查運算式,
$stringParam
會評估為 column1 的值 (全部大寫)。 - 如果未檢查運算式 (預設行為),
$stringParam
會評估為'upper(column1)'
傳入時間戳記
在管線運算式語言中,pipeline().TriggerTime
等的系統變數和 utcNow()
之類的函式會以 'yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ' 格式傳回時間戳記作為字串。 若要將這些參數轉換成時間戳記類型的資料流程參數,請使用字串插補,在 toTimestamp()
函式中包含所需的時間戳記。 例如,若要將管線觸發時間轉換成資料流程參數,您可以使用 toTimestamp(left('@{pipeline().TriggerTime}', 23), 'yyyy-MM-dd\'T\'HH:mm:ss.SSS')
。
注意
資料流程最多只能支援 3 毫秒數字。 left()
函式用來修剪其他數字。
管線參數範例
假設您有一個整數參數 intParam
,參考字串類型的管線參數 @pipeline.parameters.pipelineParam
。
@pipeline.parameters.pipelineParam
會在執行階段獲指派 abs(1)
的值。
在衍生資料行等的運算式中參考 $intParam
時,其會評估 abs(1)
是否傳回 1
。
資料流程運算式參數
選取 [資料流程運算式] 會開啟資料流程運算式產生器。 您將能夠在整個資料流程中參考函式、其他參數,以及任何已定義的結構描述資料行。 這個運算式會在參考時進行評估。
注意
如果您傳入無效的運算式或參考不存在於該轉換中的結構描述資料行,則參數會評估為 null。
以參數的形式傳入資料行名稱
常見的模式是以參數值的形式傳入資料行名稱。 如果資料行是在資料流程結構描述中定義,您可以直接將其參考為字串運算式。 如果未在結構描述中定義資料行,請使用 byName()
函式。 請記得使用轉換函式 (例如 toString()
),將資料行轉換成其適當的類型。
例如,如果想要根據參數 columnName
對應字串資料行,您可以新增等於 toString(byName($columnName))
的衍生資料行轉換。
注意
在資料流程運算式中,不支援字串內插補點 (取代字串內的變數)。 相反地,將運算式串連成字串值。 例如,'string part 1' + $variable + 'string part 2'