Azure Data Factory傳遞引數的方式主要有兩種,通過Pipeline的Parameter和Variable來傳遞引數,通過Activity的輸出來傳遞引數。要在Activity中引用Parameter、Variable或活動輸出的值,需要通過“Add dynamic content”來實現。
Activity可以通過表示式獲得動態上下文,使得Activity可以根據表示式的值得出不同的執行效果。
一,通過Parameter 和 Variable來傳遞引數
在Pipeline中,可以建立Parameter和Variable,Parameter是不可變的、只讀的常量,而Variable的值是可變。從這個意義上來說,Parameter和Variable都是在Pipeline級別上建立的常量或變數。
1,建立Parameter和Variable
點選Pipeline的畫布,底部彈出對話方塊,開啟Parameters選項卡,建立Parameter,Parameter的Type有String、Int、Float、Bool、Array、Object和SecureString。Object代表的是物件型別,通常是指表型別。
開啟Variables選項卡,建立Variable,Variable的Type只有String、Bool和Array。
2,引用Parameter和Variable
在“Add dynamic content”的文字框中輸入公式,來引用Parameter或Variable的值。
舉個例子,引用Paramter的值:
舉個例子,引用Variable的值:
3,更新Variable的值
用於可以通過Set Variable 活動或Append Variable活動來更新Variable的值。其中,Set Variable活動用於更新變數值,而Append Variable用於向Array型別的變數增加item,即向陣列的末尾增加一個元素。
二,通過Activity的輸出來傳遞引數
在Pipeline中的Activity的輸出,都可以通過“Add dynamic content”來新增Activity outputs:
通常活動的輸出(output)是表結構,引用表中第一行的某一列的語法是:
@activiy('activity_name').output.firstRow.column_name
三,應用表示式
資料工廠以JSON檔案的格式來配置Activity的屬性,一個Key-Value對錶示一個屬性。在Value中應用表示式,表示式中的字串使用單引號:'string' 來表示,
1,表示式的理論知識
定義中的JSON的值(Value)可以是文字的(常量),或者在執行時求值的表示式,例如:
"name": "value" "name": "@pipeline().parameters.password"
表示式可以出現在JSON字串值中的任何位置,如果JSON值是一個表示式,則可以通過前導符號@來提取表示式的主體。如果需要以@開頭的文字字串,則必須使用@@對其進行轉義。 以下示例顯示如何評估表示式。
舉個例子,myString引數是foo,myNumber引數是42,引用表示式運算的結果如下:
2,應用表示式
開啟“Add dynamic content”對話方塊,輸入表示式,如果表示式需要引用執行時的值,要以@字元開頭。
上文遇到的表示式:
- 引用變數: @variables('var_name')
- 引用Pipeline的引數:@pipeline().parameters.para_name
- 獲得活動輸出的第一行的某一列的值:@activiy('activity_name').output.firstRow.column_name
- 根據表示式獲得一個bool值:@equals(variables('strVar'),'abc')
參考文件: