ADF 第五篇:轉換數據
- 2020 年 12 月 17 日
- 筆記
- Azure, Azure Data Factory
映射數據流(Mapping Data Flow)的核心功能是轉換數據,數據流的結構分為Source、轉換和Sink(也就是Destination),這種結構非常類似於SSIS的數據流。
在數據流中,數據就像流水(stream)一樣,從上一個組件,流向下一個組件。組件之間有graph相連接,把各個組件連接為一個轉換流(transformation stream),在數據流面板中,graph顯示為一根線,用於表示數據從一個組件流向另一個組件的路徑。
轉換組件是數據流的核心組件,每一個轉換組件都有輸入和輸出,接收上一個路徑上的組件輸入的數據,並向下一個路徑上的組件輸出數據。
一,創建映射數據流面板
打開一個數據工廠,切換到Author面板中,從「Factory Resources」中選擇「Data flows」,從後面的「…」 (Actions)中選擇「New mapping dataflow」,新建數據流面板:
初始的數據流面板如下圖所示,dataflow1是數據流面板的名稱,面板的中央是畫布,可以向畫布中添加Source、轉換組件和Sink(destination)。
二,為數據流組件添加Source
從dataflow的面板中點擊「Add Source」為數據流添加源, 添加數據源之後,source1是源的名稱,右下方有一個「+」號,表示為源添加轉換功能。
在選中Source之後,面板中央的下方區域顯示為Source的屬性面板,
1,Source setting 面板
Source settings 用於設置Source的屬性,常用的Source屬性是Source type(源類型),最常用的類型是Dataset,表示從Dataset中獲取數據。
2,Optimize 面板
Optimize 選項卡 用於設置分區架構,可以設置Partition option、Partition type和 Number of partitions,分區會優化數據流的性能。
3,Inspect面板
Inspect 選項卡用於顯示數據流的元數據,該選項卡是一個只讀的視圖,從該選項卡中可以看到數據流的列數量(column counts),列變化、增加的列、類的數據類型、列的順序等。
三,添加轉換功能
點擊Source右小角的「+」號,為源添加轉換功能,這是數據流的核心功能,常用的轉換功能分為四組:Multiple inputs/outputs、Schema modifier、Row modifier和Destination。
1,多輸入/輸出(Multiple inputs/outputs)
- Join:用於表示連接,把多個Source(Input)連接成一個輸出流
- Conditional Split:條件拆分,把一個Source 按照條件拆分成多個輸出流
- Exists:需要兩個輸入Left stream和Right stream,按照指定的條件和Exist type輸出數據,如果Exist type是Exists,那麼表示輸出Left Stream存在於Right stream的數據;如果Exist type是Doesn’t exist,那麼表示輸出Left stream不存在於Right stream的數據。
- Union:把多個輸入合併
- Lookup:需要兩個輸入,Primary stream和Lookup stream,把Primary stream中存在於Lookup stream中的數據輸出。
2,Schema Modifier
對列進行修改:
- Derive Column:派生列
- Select:選擇列
- Aggregate:對源中的數據進行聚合運算
- SurrogateKey:根據源的主鍵生成代理主鍵
- Pivot和Unpivot:透視和逆透視
- Windows:定義數據流中基於窗口的列的聚合
- Flatten:平展數據,例如,把JSON欄位平展,生成多個欄位
- Rank:排名
3,Row Moifier
對行進行修改:
- Filter:過濾行
- Sort:對行進行排序
- Alter Row:修改行,設置針對行的插入、刪除、更新和更新插入(upsert)策略
4,Destination
Sink:用於設置數據存儲的目標
四,運行和監控數據流
數據流實際上是Pipeline中的一個Activity,只有在Pipeline中創建數據流Activity,才能開始Debug,並設置觸發器。
1,調式數據流
在發布(publish)之前,需要對數據流進行調試,把數據流的「Data flow debug」設置為啟用:
調試完成之後,發布數據流,就可以把數據流保存到數據工廠中。
2,添加數據流Activity
在Pipeline中面板中添加Data flow 活動,
在Data flow活動的Settings選項卡中,在「Data flow」中設置引用的數據流,Run on (Azure IR) 用於設置IR,並可以設置日誌級別(Logging Level),Verbose是默認選項,表示記錄詳細的日誌。
3,監控數據路
監控數據流其實就是在Pipeline runs中查看管道執行的情況
參考文檔:
Transform data using mapping data flows