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中已經輸出相應結果。
更多
相關文章
- 《上古卷軸5:天際》設計師分享支線任務設計祕笈——迭代式任務設計法
- 詞頻統計任務程式設計實踐程式設計
- 1.2.7. 任務7:資料庫設計資料庫
- 複雜任務中,流程的解耦設計解耦
- 任務設計:關於幸福的生產力
- 設計漫談:傳說任務的曲折道路
- 基於Java反射的定時任務設計Java反射
- 【任務】Python語言程式設計.MOOC學習Python程式設計
- Spring / Spring boot 非同步任務程式設計 WebAsyncTaskSpring Boot非同步程式設計Web
- 基於Redis的任務排程設計方案Redis
- 文字語音互相轉換系統設計
- 系統架構設計之-任務排程系統的設計架構
- Agent 任務編排系統:從設計到落地
- 分散式任務排程系統設計小結分散式
- .NET併發程式設計-任務函式並行程式設計函式並行
- 《JAVA併發程式設計實戰》任務執行Java程式設計
- 從任務中心看狀態機功能元件設計元件
- 【程式設計測試題】遊戲任務標記程式設計遊戲
- js設定定時任務JS
- win10如何建立任務計劃_win10電腦怎麼設定定時任務Win10
- Oracle 任務管理之 ----program(程式)---scheduler(計劃)--Job(任務)Oracle
- .NetCore Hangfire任務計劃NetCore
- Linux 任務計劃管理Linux
- (轉)開源的任務佇列服務HTQ佇列
- 一文帶你玩轉設計模式之「責任鏈」設計模式
- Linux 中怎麼設定計劃任務:cron 與 anacronLinux
- 爐石傳說的每日任務設計妙在何處
- 《Unix 網路程式設計》11:名字和地址轉換程式設計
- 非同步程式設計:.NET 4.5 基於任務的非同步程式設計模型(TAP)非同步程式設計模型
- 《無盡的任務》設計師:《無盡的任務》如何實現20年的使用者留存?
- mysql和oracle計劃任務MySqlOracle
- 任務佇列,巨集任務與微任務佇列
- Spring Boot整合quartz實現定時任務並支援切換任務資料來源Spring Bootquartz
- 【freertos】006-任務切換實現細節
- UCOSIII(1)——SVC與PenSV實現任務切換
- 1. 揭秘Spring型別轉換 - 框架設計的基石Spring型別框架
- 【Perl程式設計-6】正規表示式--替換+轉化程式設計
- 如何使用 cron 任務在 Linux 中計劃和自動化任務Linux