一、查詢分析器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輸出等。