基於ETL的抽取數據的報表實現

一、查詢分析器java

查詢分析器主要工做是從不一樣來源的數據庫中抽取對應指標值。web

界面原型參考以下(仿 IREPORT):數據庫

圖1 數據來源切換express


二、報表科目與查詢分析字段映射oracle

圖2 字段映射工具

這裏,字段選擇的地方增長一列,用做選擇數據科目的映射。url

圖3 SQL最後修改spa

圖形化界面生成SQL後,能夠手工修改SQL,點擊OK生成XML格式的數據抽取腳本。設計


三、ETL工具日誌

        我使用的是Scriptella,這個工具的好處是,我不用去把查找指定數據的SQL用xml工具去從新解析封裝,這種設計對於後期的產品維護,二次開發省了很多事。

        在Scriptella啓動以前,咱們能夠經過查詢分析器來指定數據鏈接的數據表,經過對錶的查詢,獲取到表中的數據字段,字段類型等信息,接着,在系統界面中設置字段對應的數據科目,設置過程能夠選擇老版本的配置映射進行修改,保存後生產新的映射模板。

        在全部模板設置完成之後,出發腳本生成事件,生成供Scriptella執行的XML腳本。

        XML實例以下:

<!DOCTYPE etl SYSTEM "
http://scriptella.javaforge.com/dtd/etl.dtd
">

<etl>

        <connection id="db1" url="jdbc:oracle:thin:@uri_1:1521:orcl" user="username" password="password" classpath="external.jar"/>

        <connection id="db2" url="jdbc:oracle:thin:@uri_2:1521:pcis" user="username" password="password"/>

        <query connection-id="db1">

            <!-- Select product from software category in db1-->

            SELECT * FROM web_org_oper;

            <!-- for each row execute a script -->

            <script connection-id="db2">

            

             <!-- 這裏也能夠建立表 -->

             <!-- 

             CREATE TABLE Track (

               ID INT,

               ALBUM_ID INT,

               NAME VARCHAR(100),

               DATA LONGVARBINARY

             );

              -->

            

                <!-- Insert all selected products to db2

                     use ? to reference properties, columns or ?{expressions}-->

                INSERT INTO web_org_oper(C_OPER_ID, C_OPER_CNM, C_PASSWD,C_IS_VALID,T_PWD_STRT_TM,T_PWD_END_TM,C_SRC,C_REL_CDE,C_DPT_PERM,C_DPT_DIFF,C_PRD_DIFF,C_OP_DIFF,C_CRT_CDE,T_CRT_TM,C_UPD_CDE,T_UPD_TM,C_OWN_DPT_CDE,C_CSS_STYLE,C_EDU_CDE,C_STATUS,C_LMT_FLAG,C_TRANS_MRK,T_TRANS_TM,C_ID_NO,C_OPER_CNM_BAK) 

                 values (?C_OPER_ID, ?C_OPER_CNM, ?C_PASSWD,?C_IS_VALID,?T_PWD_STRT_TM,?T_PWD_END_TM,?C_SRC,?C_REL_CDE,?C_DPT_PERM,?C_DPT_DIFF,?C_PRD_DIFF,?C_OP_DIFF,?C_CRT_CDE,?T_CRT_TM,?C_UPD_CDE,?T_UPD_TM,?C_OWN_DPT_CDE,?C_CSS_STYLE,?C_EDU_CDE,?C_STATUS,?C_LMT_FLAG,?C_TRANS_MRK,?T_TRANS_TM,?C_ID_NO,?C_OPER_CNM_BAK);

            </script>

        </query>

</etl>


JAVA代碼調用(須要依賴 odbc5.jar、scriptella.jar)---這裏只寫一種,不少種調用方法:
    EtlExecutor.newExecutor(Test.class.getResource("etl.xml")).execute();


四、科目勾稽關係校驗及日誌記錄。

設置對應科目勾稽關係校驗公式與模型。

勾稽方向 偏差值 上勾稽字段 計算方法 下勾稽字段 描述
= 0 F0 - F1,F2,F3,F4 F0-SUM(F1,F2,F3,F4)=0
< 0 F0 - F1,F2,F3,F4 F0-SUM(F1,F2,F3,F4)<0
> 0 F0 + F1,F2,F3,F4 SUM(F0,F1,F2,F3,F4)>0

以及勾稽關係驗證錯誤後的提示。


五、輸出設置

設置最後數據輸出的方式,包含XML輸出、EXCEL輸出、word輸出、PDF輸出等。

相關文章
相關標籤/搜索