天天看點

集團公司(嵌入ETL工具)财務報表系統解決方案集團公司(嵌入ETL工具)财務報表系統解決方案售後服務體系:

集團公司(嵌入ETL工具)财務報表系統解決方案

一、項目背景:

某集團公司是一家擁有100多家子公司的大型集團公司,旗下子公司涉及各行各業,包括:金礦、銅礦、房産、化纖等。由于子公司在業務上的差異,子公司的财務報表也存在很多不同之處。是以,各個子公司需要根據自己的情況,制作符合自己個性化需求的報表模版,然後再部署到集團伺服器進行統一管理。

集團使用的是SAP,所有子公司正是因這個系統而産生大量資料且這些資料儲存在一起。此外,各子公司也有一些自己的系統,是以各自也會産生一些資料。

出于資料安全等因素的考慮,各個子公司的資料統一集中在集團總部的資料庫。子公司的報表開發人員使用FineReport連接配接到總部資料庫時,隻能看到自己權限内的資料。

二、項目建設目标:

定期的将總資料源中資料導入到各子公司内的資料庫表中,此時各子公司在開發報表時就隻需連自己的資料庫表即可,這樣就實作了資料權限的控制,同時也較好的将各子公司的資料放在各子公司的資料庫表内。

三、項目建設方案:

1. 所用工具Kettle簡介

Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運作,綠色無需安裝,資料抽取高效穩定。

ETL即資料抽取、轉換、裝載的過程。它是建構資料倉庫的重要環節。資料倉庫是面向主題的、內建的、穩定的且随時間不斷變化的資料集合用以支援經營管理中的決策制定過程。Kettle 的中文名稱叫水壺,含義就是希望把各種資料放到一個壺裡,然後以一種指定的格式流出。

Kettle這個ETL工具集,它允許你管理來自不同資料庫的資料,通過提供一個圖形化的使用者環境來描述你想做什麼,而不是你想怎麼做。

Kettle中有兩種腳本檔案,transformation和job,transformation完成針對資料的基礎轉換,job則完成整個工作流的控制。 

  作為Pentaho的一個重要組成部分,現在在國内項目應用上逐漸增多。FineReport報表軟體可以實作和Kettle工具的完美內建應用。

2. Kettle工具的優勢:

(1)kettle開源、高效

(2)kettle 非常強大而且易于使用的設計界面 

(3)有非常強大而且衆多的使用群體,應用廣泛 

(4)可用java進行內建開發: 

提供了基于JAVA的腳步編寫功能,可以靈活地自定義ETL過程,使自行定制、批量處理等成為可能,這才是一個程式員需要做的工作,而不僅是象使用Word一樣操作kettle使用者界面。

3. Kettle工具工作原理:

(1)Kettle的四大子產品:

集團公司(嵌入ETL工具)财務報表系統解決方案集團公司(嵌入ETL工具)财務報表系統解決方案售後服務體系:

Spoon 是一個圖形使用者界面,它允許你運作轉換或者任務,其中轉換是用Pan工具來運作,任務是用Kitchen來運作。Pan是一個資料轉換引擎,它可以執行很多功能,例如:從不同的資料源讀取、操作和寫入資料。Kitchen 是一個可以運作利用XML 或資料資源庫描述的任務。通常任務是在規定的時間間隔内用批處理的模式自動運作。

以下是一個簡單的ETL過程:

集團公司(嵌入ETL工具)财務報表系統解決方案集團公司(嵌入ETL工具)财務報表系統解決方案售後服務體系:

(2)原理總結:

Kettle實作資料轉換,主要是通過JDBC驅動,建立連接配接,加載資料,轉化資料并儲存資料。

4. 利用kettle實作定時導出資料方案

     實作定時導出資料,主要實作二個關建點:

      1.定時功能

      2.從源資料庫中提取資料插入目标資料庫

      利用 kettle工具可以輕松實作以上二點。

      1.定時功能:

        Kettle是成熟專業的ETL工具,實作定時功能隻需對作業進行相應的設定即可,如下所示,表示每天的12點整執行同步任務。

集團公司(嵌入ETL工具)财務報表系統解決方案集團公司(嵌入ETL工具)财務報表系統解決方案售後服務體系:

       2.從源資料庫中提取資料插入目标資料庫

      Kettle隻需簡單配置即可從資料庫中取出資料,如下圖所示。

集團公司(嵌入ETL工具)财務報表系統解決方案集團公司(嵌入ETL工具)财務報表系統解決方案售後服務體系:

   其中${company}為公司變量名稱,存入目标資料庫也類似,隻需要簡單配置即可

詳細使用配置見下面的執行個體。

5. Kettle工具的定時資料提取應用執行個體:

(1)執行個體功能:

定期對各個子公司的資料庫表進行查詢并且通過資料抽取和比較實作資料插入更新。

(2)執行個體分析:

實作整項作業共需要3個檔案,名稱和對應功能如下表所示:

檔案名稱 實作功能
main.kjb 作業檔案,用來定時執行mainTrans.ktr
mainTrans.ktr 用來批量執行trans1.ktr,并提供trans1.ktr的變量
trans1.ktr 根據mainTrans.ktr提供的變量具體執行導出的轉化

(1)檔案詳細說明:

mainTrans.ktr:

在mainTrans.ktr中生成不同的資料庫連接配接資訊和其他變量資訊。

示例中為手動輸入資料,也可以把資訊儲存在文本中或者資料庫中,設定對應的輸入即可。如下所示,table為子公司資料庫中的表名,company對應公司,後面的值為子公司資料庫的連接配接資訊。

集團公司(嵌入ETL工具)财務報表系統解決方案集團公司(嵌入ETL工具)财務報表系統解決方案售後服務體系:

mainTrans.ktr中有個java腳本,具體行為為擷取trans1.ktr檔案,設定變量并執行。

上面有幾條記錄就會執行幾次trans1.ktr。

trans1.ktr:

具體執行導出的檔案,示例中為mysql資料庫,表名和字段也是特别設定的,請根據自己的環境進行相應的修改。

表輸入:

表輸入按照需要導出的總資料庫資訊配置好,sql示例語句為:

    SELECT * FROM kettletb WHERE company='${company}'

    表示為隻選出對應子公司的資料,其中${company}為傳入進來的公司名。

具體配置頁面如下圖:

集團公司(嵌入ETL工具)财務報表系統解決方案集團公司(嵌入ETL工具)财務報表系統解決方案售後服務體系:

表輸出:

這裡的配置需要根據變量來設定,目标表為${table}來擷取要導出的表名。其他配置如下所示,其中的值對應mainTrans.ktr中生成的資料(其中Password為${password}):

集團公司(嵌入ETL工具)财務報表系統解決方案集團公司(嵌入ETL工具)财務報表系統解決方案售後服務體系:

插入更新:

示例中對資料庫表中的id和name字段進行查詢,通過對id的比較來篩選掉原本資料庫表裡就用的資料,這樣的話隻需要插入最新更改的資料即可,大大提高了資料轉換的效率。

集團公司(嵌入ETL工具)财務報表系統解決方案集團公司(嵌入ETL工具)财務報表系統解決方案售後服務體系:

設定main.kjb的定時時間,運作即可。設定頁面參考如下圖:

集團公司(嵌入ETL工具)财務報表系統解決方案集團公司(嵌入ETL工具)财務報表系統解決方案售後服務體系:

售後服務體系:

集團公司(嵌入ETL工具)财務報表系統解決方案集團公司(嵌入ETL工具)财務報表系統解決方案售後服務體系:

繼續閱讀