文档章节

基于ETL的抽取数据的报表实现

Avanon
 Avanon
发布于 2015/07/02 16:42
字数 726
阅读 1104
收藏 6

1、查询分析器

查询分析器主要工作是从不同来源的数据库中抽取对应指标值。

界面原型参考如下(仿 IREPORT):

图1 数据来源切换


2、报表科目与查询分析字段映射

图2 字段映射

这里,字段选择的地方增加一列,用作选择数据科目的映射。

图3 SQL最后修改

图形化界面生成SQL后,可以手工修改SQL,点击OK生成XML格式的数据抽取脚本。


3、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();


4、科目勾稽关系校验及日志记录。

设置对应科目勾稽关系校验公式与模型。

勾稽方向 误差值 上勾稽字段 计算方法 下勾稽字段 描述
= 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

以及勾稽关系验证错误后的提示。


5、输出设置

设置最后数据输出的方式,包含XML输出、EXCEL输出、word输出、PDF输出等。

© 著作权归作者所有

Avanon

Avanon

粉丝 26
博文 19
码字总数 7667
作品 0
武汉
人事招聘
私信 提问
关于ETL工具的思考

阅读 有感! 通常认为ETL 就是数据抽取, 转换, 加载的过程, 完全正确. 就像数据库就是存储和管理数据的工具一样, 然而数据库并不全部是数据的存储, 最重要的是管理, 即数据的并发性一致性可恢...

技术小美
2017/11/19
0
0
开源 BI 系统相关知识综合解读

这些众多的BI(商业智能)项目从规模和对BI系统支撑的完善程度上来说,大体可以分为Framework、Stand-aloneTools和BISuit三种类型。 Framework 开源框架,这是在商业BI系统中所没有的。我们可...

红薯
2009/05/05
842
0
SmartCode 扩展 - SmartCode.ETL

SmartCode.ETL 这不是先有鸡还是蛋的问题 继国庆节 SmartCode 正式版(SmartCode.Generator)发布之后,SmartCode 迎来了新的能力 SmartCode.ETL ! SmartCode 正式版从开始发布就从未说过自己...

Ahoo-Wang
2018/11/16
2.2K
1
SmartCode.ETL 这不是先有鸡还是蛋的问题!

继国庆节 SmartCode 正式版(SmartCode.Generator)发布之后,SmartCode 迎来了新的能力 SmartCode.ETL ! SmartCode 正式版从开始发布就从未说过自己仅仅是个代码生成器,这点上从我第一次宣...

Ahoo-Wang
2018/11/06
0
0
SmartCode.ETL 这不是先有鸡还是蛋的问题!

继国庆节 SmartCode 正式版(SmartCode.Generator)发布之后,SmartCode 迎来了新的能力 SmartCode.ETL ! SmartCode 正式版从开始发布就从未说过自己仅仅是个代码生成器,这点上从我第一次宣...

Ahoo-Wang
2018/11/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Knowage 6.2安装部署

注意:需要正确配置JAVA_HOME和JRE_HOME还有catalina_home,否则启动的时候tomcat一闪而过,想要获得报错信息,可以打开cmd,在dos命令行运行开始命令 官网:https://www.knowage-suite.com/s...

阿伦哥-
5分钟前
2
0
c++11 左值引用和右值引用

#include <iostream>using namespace std;void Print(string& s){ cout << s;}int main(){ string s="abc"; Print(s); // OK Print("abc"); // parse error......

SibylY
7分钟前
2
0
浅谈Facade外观模式

一、前言 外观模式是一种非常简单的模式,简单到我们经常都会使用,比如对于类A和B,如果两者需要交互,经过一定的处理过程才能实现某一个具体的功能,那么我们可以将这个处理的过程定义为一...

青衣霓裳
7分钟前
2
0
AnalyticDB for PostgreSQL 6.0 新特性介绍

阿里云 AnalyticDB for PostgreSQL 为采用MPP架构的分布式集群数据库,完备支持SQL 2003,部分兼容Oracle语法,支持PL/SQL存储过程,触发器,支持标准数据库事务ACID。ADB PG通过行存储、列存...

Mr_zebra
9分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部