數據倉庫開發——Kettle使用示例

来源:http://www.cnblogs.com/itechpark/archive/2016/09/21/yinzei_kettle_demo.html
-Advertisement-
Play Games

Kettle是一個開園ETL工具,做數據倉庫用Spoon。然而網上找了很久沒有找到一個手把手教人的示例,於是自己學習的過程中把步驟都截圖保存下來了。步驟可能有點簡略,但是作為程式員肯定是能看懂的,僅供參考學習。 ...


Kettle是一個開園ETL工具,做數據倉庫用Spoon。 工具:下載Spoon,解壓即可用   1、認識常用組件:     表輸入     插入\更新     數據同步     文本文件輸出     更新     自動文檔輸出     表輸出       列轉行     增加常量     增加序列     排序記錄     行轉列     過濾記錄     資料庫連接       合併記錄     排序合併     記錄關聯(笛卡爾輸出)     記錄集連接       分組     在記憶體中分組   2、第一個例子     生成 100 個隨機數,隨機數取值於[0,100)之間, 計算小於等於 50 的隨機數個數和 大於50 的隨機數個 數。 並把這兩個統計數字放在資料庫表的一行的兩列中, 即輸出的結果有一行,一行包括兩列,每列是一個統 計值。       1.生成隨機數,0-1區間內     2.定義常量,100     3.計算,隨機數乘以100,使得生成的數據在0~100區間內 這裡後面有分支,預設是數據分發,這裡要保證數據全部都流到兩條支路去要選擇複製分發模式,在計算器這個步驟上面右鍵,選擇數據發送,複製發送模式     4.條件判斷有幾種方法,這裡用的是根據java代碼過濾記錄     5.分組計算總條數,4步中結果為真進分組1,否則分組2,分組裡面計算總條數     6.關聯記錄     7.輸出   3、數據倉庫     目標:數據倉庫就是把別的業務組的表查出來, 再轉換, 保存到我們這邊創建的新的業務表中。後續再開發介面(http、webservice、dubbo等)給別的組調用。       3.1用戶評價表中有各種評價得分,這裡對經紀人的各種得分求平均分保存到bidb_brance中     0.建立資料庫連接         數據源1:mysql://172.16.2.187:33096/jjskfang         數據源2:mysql://172.16.2.245:33096/bidb_branch       1.表輸入:         使用數據源1,         初始數據為:         SELECT ID, WORKER_ID, WORKER_NAME, USER_ID, USER_NAME, GRADE, SCORE, PROFESS_SCORE,         KNOW_SCORE, SERVICE_SCORE, TAGS, CONTENT, ORDER_ID, ORDER_TYPE, `STATUS`, MODIFY_TIME,         CREATE_TIME FROM jjskfang.CUSTOMER_COMMENT         WHERE `STATUS` = 1       2.欄位選擇:         選擇必要的欄位,這裡也可以省略這一步         選擇:WORKER_ID, WORKER_NAME,SCORE, PROFESS_SCORE, KNOW_SCORE,SERVICE_SCORE       3.排序:選擇排序欄位為WORKER_ID,分組前必須對分組欄位進行排序,類似禹sql裡面的group by       4.分組:根據WORKER_ID分組,同時使用聚合函數(這裡就完全類似sql裡面的分組和聚合函數了),如下圖:       5.計算器:用計算器計算出各個指標的平均數,如圖:       6.插入|更新:這一步將數據保存到目標資料庫中,準備工作為先在數據源2中創建需要的表:         建表如圖:         插入|更新如圖:選擇數據源2,表為剛剛創建的表         這一步根據workerId查詢判斷執行更新或者插入操作,到這裡這個簡單的轉換工作就完成了,可以去資料庫裡面查詢一下,看到數據都出來了是不是滿滿的成就感呢         感悟:做到這裡讓我想到一個問題,以前做車輛管理系統高危用戶五級風險預警,當時是用java算出來的,真是讓人頭大。先去查詢用戶駕駛行為,再查詢用戶行為報警等各種數據,然後拼命的循壞各種判斷,得到分析後的數據再保存到另外一個表中,來來回回寫了一堆代碼,最後發現執行的時候,定時器一啟動服務啟記憶體就完全不夠用了,因為我開始是一次性把所有數據查出來再分析的。然後又去想怎麼改程式,最終終於拼湊出來了。 現在用kettle去做貌似就簡單多了,現在感受到的是開發起來方便,乾凈利落。不知道放到定時器運行的時候性能效率怎麼樣?後續持續研究。       4、java調用Kettle示例         從網上複製的代碼, 後續自己寫示例驗證 public class KettleTest {     public static void main(String[] args) {         String filename = "/wang/work/study/Kettle/sample/excel_trans.ktr";         try {             KettleEnvironment.init();             EnvUtil.environmentInit();                    TransMeta transMeta = new TransMeta(filename);             Trans trans = new Trans(transMeta);             trans.execute(null); // You can pass arguments instead of null.             trans.waitUntilFinished();             if ( trans.getErrors() > 0 ){                 throw new RuntimeException( "There were errors during transformation execution." );             }         }         catch (KettleException e ) {             // TODO Put your exception-handling code here.             System.out.println(filename);             System.out.println(e);         }     } }       5、java開發定時器執行ktr腳本         這個步驟省略。   總結:工具的使用並不難,關鍵在於理解業務,還有寫sql的能力!   僅供參考,不足之處還請見諒,歡迎指正!轉載請標明出處。如有疑問,歡迎評論或者聯繫我郵箱[email protected]
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Redis是一個C實現的基於記憶體、可持久化的鍵值對資料庫,在分散式服務中常作為緩存服務。本篇將介紹在CentOS下如何從零開始安裝到配置啟動服務。 ...
  • sql函數 character函數 String 1.INITCAP 首字母大小 select initcap(address) address from student; select initcap('ni hao') from dual; --dual虛擬表 '數據' 列名-數據 2.LTRI ...
  • ACCESS數據的連接及語句執行操作,不難,久不用會生疏,每次都要找資料,乾脆自己整理下,記錄下來,需要的時候,直接查看,提高效率。也供初學者參考 1、連接字元串 public static string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Da ...
  • 身處MySQL這個圈子,能夠切身地感受到大家對MySQL 5.7的期待和熱情,似乎每個人都迫不及待的想要瞭解、學習和使用MySQL 5.7。那麼,我們不禁要問,MySQL 5.7到底做了哪些改進,引入了哪些新功能,性能又提升了多少,能夠讓大家翹首以盼,甚至歡呼雀躍呢? MySQL 5.7在諸多方面都 ...
  • Oracle day01 Oracle簡介及表的創建,增刪改查 安裝好之後,需要手動開啟的服務 : 右鍵我的電腦 管理 服務 OraclORCL 和 OracleListiner . 必須開啟. dos 底下輸入sqlplus啟動oracle,資料庫口令 : orcl 用戶名system密碼orcl ...
  • paging : http://www.codeproject.com/Articles/44858/Custom-Paging-GridView-in-ASP-NET-Oracle http://dba-oracle.com/t_display_oracle_stored_procedures.h ...
  • 簡介: GreenPlum是一個基於PostgreSQL資料庫開發的MPP架構的資料庫倉庫,適用於OLAP系統,支持50PB(1PB=1000TB)級海量數據的存儲和處理。 背景: 目前有一個業務是需要將Oracle資料庫中的基礎數據增量同步到GreenPlum數據倉庫,便於進行數據分析和處理。 規 ...
  • sql代碼: 資料庫死鎖(查詢或其他陷入死迴圈) ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...