PDI設計轉換任務
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 true
和Result is false
選項。
雙擊過濾記錄元件,新增條件。
雙擊設定第一個分組,計算大於等於50的個數。
雙擊設定第二個分組,計算小於50的個數。
結果輸出
步驟->連線
中拖入記錄關聯(笛卡爾輸出)
元件,因為我們直接將分組結果放在一行輸出,直接笛卡爾連線即可。
步驟->輸出
中拖入Excel輸出
元件,記錄關聯元件指向Excel輸出。雙擊Excel輸出
元件,檔名中設定為${output_dir}/result
,其中,${output_dir}
是個變數,稍後設定。result是輸出檔名。
欄位頁中可以獲取要輸出的欄位,也可以不設定,預設輸出所有欄位。
Spoon設計器中編輯->設定環境變數
,會出現我們在Excel中用到的變數,值設定為../mywork
,因為預設的輸出目錄是Spoon.bat所在目錄,我們在上層目錄中新建一個mywork資料夾。
再拖入一個Excel輸出
元件,從計算器
元件指向該元件,新增連線時會彈出選項,選擇複製
。這步的目的是將計算器計算出的結果儲存一個。
雙擊該元件,檔名中設定為${output_dir}/data
.
執行
至此,所有步驟已完成。
點選上部按鈕中第一個執行這個轉換
,彈出執行轉換對話方塊,直接點選啟動,可以看到下部皮膚中的執行日誌,執行完成後檢視結果Excel中已經輸出相應結果。
更多
相關文章
- [轉載]iOS 後臺任務設計指導iOS
- ubuntu 設定計劃任務Ubuntu
- Linux核心模組程式設計--替任務排程(轉)Linux程式設計
- 《上古卷軸5:天際》設計師分享支線任務設計祕笈——迭代式任務設計法
- 基於任務的導航設計
- 詞頻統計任務程式設計實踐程式設計
- 【轉】linux定時任務的設定Linux
- 計劃任務
- 1.2.7. 任務7:資料庫設計資料庫
- Axure設計“每日任務目標”小程式
- Udev的配置,配置IP轉發,計劃任務dev
- mysql計劃任務MySql
- 計劃任務(CRON)
- 計劃任務crontab
- 任務設計:關於幸福的生產力
- 設計漫談:傳說任務的曲折道路
- 複雜任務中,流程的解耦設計解耦
- 【程式設計測試題】遊戲任務標記程式設計遊戲
- 基於Java反射的定時任務設計Java反射
- 基於Redis的任務排程設計方案Redis
- 第五項任務—給出設計類圖
- (轉)計劃任務工具 cron 的配置和說明
- 系統架構設計之-任務排程系統的設計架構
- Oracle 任務管理之 ----program(程式)---scheduler(計劃)--Job(任務)Oracle
- js設定定時任務JS
- win10如何建立任務計劃_win10電腦怎麼設定定時任務Win10
- 從任務中心看狀態機功能元件設計元件
- 爐石傳說的每日任務設計妙在何處
- 分散式任務排程系統設計小結分散式
- .NET併發程式設計-任務函式並行程式設計函式並行
- 【任務】Python語言程式設計.MOOC學習Python程式設計
- 《JAVA併發程式設計實戰》任務執行Java程式設計
- 關於非同步任務設計的幾點思考非同步
- 專案職務設計(轉)
- 不可能的任務?(轉)
- XP空間――挖掘“任務計劃”的另類功能(轉)
- 任務佇列,巨集任務與微任務佇列
- Spring / Spring boot 非同步任務程式設計 WebAsyncTaskSpring Boot非同步程式設計Web