ADF 第七篇:控制流概述
Azure Data Factory 系列部落格:
- ADF 第一篇:Azure Data Factory介紹
- ADF 第二篇:使用UI建立資料工廠
- ADF 第三篇:Integration runtime和 Linked Service
- ADF 第四篇:管道的執行和觸發器
- ADF 第五篇:轉換資料
- ADF 第六篇:Copy Data Activity詳解
- ADF 第七篇:控制流概述
控制流的作用就是在管道的Activity之間設定約束條件,只有滿足一定的約束條件時,才會執行相應的Activity。控制流主要分為優先約束和Activity。
一,控制流的優先約束
從直觀上來看,控制流的優先約束使得Activity在Pipeline中按照一定的條件進行分支和連線。利用控制流可以實現如下場景:
如果Copy data活動執行成功,那麼管道將沿著OnSuccess的控制流,執行“Send Success Email”這一分支,傳送成功Copy操作的詳細資訊; 如果Copy data活動執行失敗,那麼管道將沿著OnFailure的控制流,執行“Send Fail Email”這一分支,傳送Copy操作失敗的詳細資訊。
1,OnSuccess分支
每一個Activity都會預設建立一個OnSuccess控制流,該控制流線的顏色是綠色的,拖動Activity右側的綠色方塊,UI會自動出現一個綠色的箭頭,把箭頭拖到下一個Web Activity上,就完成了OnSuccess控制流的設定。
2,新增OnFail分支
點選任意一個Activity右下方的+號,彈出"Add activity on"列表,選擇 Failure,就會在Activity的右方彈出一個紅色的矩形,跟OnSuccess控制流一樣,拖放到下一個Activity上,就完成了OnFail控制流的設定。
3,利用控制流約束控制郵件的傳送
如下圖所示,利用控制流來控制郵件的傳送 ,當Copy data Activity執行成功時,傳送copy成功執行的訊息;當Copy data Activity失敗時,傳送Copy 執行失敗的訊息。
二,控制流Activity
控制流的Activity主要用於變數、迴圈和條件:
- Append variable:向 Array型別的變數中追加變數值
- Set variable:設定變數的值
- Filter:在管道中使用 Filter 活動,把篩選器表示式應用到輸入陣列。
- Lookup:用於從資料來源中檢索資料集,返回執行查詢或儲存過程的結果,如果查詢Activity的輸出是單行的,那麼該Activity的輸出可以用於ForEach活動。
- ForEach:迴圈執行內部的活動,迴圈的次數由items指定的集合決定,依次訪問集合中每一個元素。
- If condition:If-Else 分支,條件為True時,執行Activity1,條件為False時,執行另一個Activity。
- Switch:分支切換,根據條件,執行不同分支的Activity
- Validation:驗證活動,它會阻止Pipeline的執行,直到應用的資料集存在或超時為止。
- Until:Until 活動提供的功能與 do-until 迴圈結構以程式語言提供的功能相同。 它在迴圈中將執行一組活動,直到與活動相關聯的條件的計算結果為 true,你可以在資料工廠中為 Until 活動指定超時值。
1,ForEach活動
ForEach 活動在管道中定義重複的控制流。 此活動用於迴圈訪問集合,並在迴圈中執行指定的活動。 此活動的迴圈實現類似於採用程式語言的 Foreach 迴圈結構。點選ForEach圖示內部的“筆”,向內部新增活動。
ForEach活動的核心配置是Items屬性,該屬性需要通過“Add dynamic content”來配置,使用者可以通過系統變數(System variables)、Functions、Variables、和Activity outputs來作為Iteration。
要把Activity outpus作為ForEach活動的Iteration,首先要建立Activity和ForEach活動的優先約束,把上游Activity的輸出作為Iteration,執行ForEach活動內的Activity,直到窮盡資料集的所有item。
2,Lookup活動
Lookup活動的作用就是從Table、Query或Stored procedure中查找出資料行,為了保證Lookup活動的查詢效能,Lookup 活動的限制:最多可以返回 5000 行;如果結果集包含的記錄超過此範圍,將返回前 5000 行。Lookup活動的輸出最多支援 4 MB 左右。如果大小超過此限制,則活動會失敗。目前,Lookup活動在超時前的最長持續時間為 24 小時。
如果勾選"First row only",那麼表示Lookup活動只返回第一行,如果不勾選,那麼返回所有行,但是要滿足Lookup活動的限制。
Looup活動輸出的結果可以作為ForEach的迭代器。
參考文件:
Branching and chaining activities in an Azure Data Factory pipeline using the Azure po