PDI設計轉換任務

c-xuan發表於2019-03-29

Pentaho Data Integration(PDI),Kettle是PDI以前的名稱.在2006年Kettle加入了開源的BI組織Pentaho,正式命名為PDI, 加入Pentaho後Kettle的發展越來越快了,並有越來越多的人開始關注它了.PDI(Kettle)是一款開源的、後設資料驅動的ETL (資料的抽取、轉換、載入)工具,是開源 ETL 工具裡功能比較強大的一個.PDI官網,最新版本為8.2.

本例用到的元件:生成隨機數,增加常量,計算器,過濾記錄,分組,記錄關聯,Excel輸出。

實現功能

隨機生成100個隨機數,隨機數取值於[0,100)之間,計算小於等於50的隨機數個數和大於50的隨機數個數。並把這兩個統計數字放在資料庫表的一行的兩列中,即輸出的結果有一行,一行包括兩列,每列是一個統計值。

步驟

我使用的PDI版本為7.1.

新建轉換

開啟PDI中的Spoon.bat進入轉換設計器。檔案->新建->轉換新建空白的抓換任務。Ctrl+s先儲存名為test.ktr的檔案。

生成隨機數

步驟->輸入中拖入生成隨機數元件,雙擊元件,新增一行,名稱為rand_num,型別為隨機數字
在這裡插入圖片描述

在元件上右鍵,選擇改變開始複製的數量,因為生成100個隨機數,所以輸入100,但是沒看到確定之類的按鈕(坑爹),直接回車就可以了。之後在元件左上角出現x100的標誌。
在這裡插入圖片描述

增加常量

步驟->轉換中拖入增加常量元件,雙擊元件,增加兩個常量。multi值設定為100,因為生成的隨機數是0-1範圍的,後面會將隨機數x100得到一個0-100的隨機整數。standard設定為50,我們將隨機數分開計數是以50為分界點。

滑鼠放在隨機數元件上,按住Shift鍵,按下滑鼠左鍵拉出一根連線到增加常量元件上。
在這裡插入圖片描述

計算器

步驟->轉換中拖入計算器元件,雙擊元件,增加一個新欄位,計算方式為A * B,分別用生成的隨機數乘上multi值。
在這裡插入圖片描述

分組記錄

步驟->流程中拖入過濾記錄元件,步驟->統計中拖入兩個分組元件,過濾記錄連線到分組上,連線的時候回彈出Result is trueResult is false選項。
在這裡插入圖片描述
雙擊過濾記錄元件,新增條件。
在這裡插入圖片描述
雙擊設定第一個分組,計算大於等於50的個數。
在這裡插入圖片描述
雙擊設定第二個分組,計算小於50的個數。
在這裡插入圖片描述

結果輸出

步驟->連線中拖入記錄關聯(笛卡爾輸出)元件,因為我們直接將分組結果放在一行輸出,直接笛卡爾連線即可。

步驟->輸出中拖入Excel輸出元件,記錄關聯元件指向Excel輸出。雙擊Excel輸出元件,檔名中設定為${output_dir}/result,其中,${output_dir}是個變數,稍後設定。result是輸出檔名。
在這裡插入圖片描述
欄位頁中可以獲取要輸出的欄位,也可以不設定,預設輸出所有欄位。
在這裡插入圖片描述
Spoon設計器中編輯->設定環境變數,會出現我們在Excel中用到的變數,值設定為../mywork,因為預設的輸出目錄是Spoon.bat所在目錄,我們在上層目錄中新建一個mywork資料夾。
在這裡插入圖片描述
再拖入一個Excel輸出元件,從計算器元件指向該元件,新增連線時會彈出選項,選擇複製。這步的目的是將計算器計算出的結果儲存一個。
在這裡插入圖片描述
雙擊該元件,檔名中設定為${output_dir}/data.
在這裡插入圖片描述

執行

至此,所有步驟已完成。
在這裡插入圖片描述
點選上部按鈕中第一個執行這個轉換,彈出執行轉換對話方塊,直接點選啟動,可以看到下部皮膚中的執行日誌,執行完成後檢視結果Excel中已經輸出相應結果。
在這裡插入圖片描述
更多

相關文章