集团公司(嵌入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的四大模块:

Spoon 是一个图形用户界面,它允许你运行转换或者任务,其中转换是用Pan工具来运行,任务是用Kitchen来运行。Pan是一个数据转换引擎,它可以执行很多功能,例如:从不同的数据源读取、操作和写入数据。Kitchen 是一个可以运行利用XML 或数据资源库描述的任务。通常任务是在规定的时间间隔内用批处理的模式自动运行。
以下是一个简单的ETL过程:

(2)原理总结:
Kettle实现数据转换,主要是通过JDBC驱动,建立连接,加载数据,转化数据并储存数据。
4. 利用kettle实现定时导出数据方案
实现定时导出数据,主要实现二个关建点:
1.定时功能
2.从源数据库中提取数据插入目标数据库
利用 kettle工具可以轻松实现以上二点。
1.定时功能:
Kettle是成熟专业的ETL工具,实现定时功能只需对作业进行相应的设置即可,如下所示,表示每天的12点整执行同步任务。

2.从源数据库中提取数据插入目标数据库
Kettle只需简单配置即可从数据库中取出数据,如下图所示。

其中${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对应公司,后面的值为子公司数据库的连接信息。

mainTrans.ktr中有个java脚本,具体行为为获取trans1.ktr文件,设置变量并执行。
上面有几条记录就会执行几次trans1.ktr。
trans1.ktr:
具体执行导出的文件,示例中为mysql数据库,表名和字段也是特别设置的,请根据自己的环境进行相应的修改。
表输入:
表输入按照需要导出的总数据库信息配置好,sql示例语句为:
SELECT * FROM kettletb WHERE company='${company}'
表示为只选出对应子公司的数据,其中${company}为传入进来的公司名。
具体配置页面如下图:

表输出:
这里的配置需要根据变量来设置,目标表为${table}来获取要导出的表名。其他配置如下所示,其中的值对应mainTrans.ktr中生成的数据(其中Password为${password}):

插入更新:
示例中对数据库表中的id和name字段进行查询,通过对id的比较来筛选掉原本数据库表里就用的数据,这样的话只需要插入最新更改的数据即可,大大提高了数据转换的效率。

设置main.kjb的定时时间,运行即可。设置页面参考如下图:

售后服务体系:

集团公司(嵌入ETL工具)财务报表系统解决方案的更多相关文章
- 集团公司(嵌入ETL工具)財务报表系统解决方式
集团公司(嵌入ETL工具)財务报表系统解决方式 一.项目背景: 某集团公司是一家拥有100多家子公司的大型集团公司,旗下子公司涉及各行各业,包含:金矿.铜矿.房产.化纤等.因为子公司在业务上的差异.子 ...
- SDC信息统计分析系统ETL工具的研究与实现[专业:计算机应用技术]
SDC信息统计分析系统ETL工具的研究与实现[专业:计算机应用技术] http://www.docin.com/p-265530271.html
- 开源ETL工具之Kettle介绍
What 起源 Kettle是一个Java编写的ETL工具,主作者是Matt Casters,2003年就开始了这个项目,最新稳定版为7.1. 2005年12月,Kettle从2.1版本开始进入了开源 ...
- 【转】ETL介绍与ETL工具比较
本文转载自:http://blog.csdn.net/u013412535/article/details/43462537 ETL,是英文 Extract-Transform-Load 的缩写,用来 ...
- 【转】阿里出品的ETL工具dataX初体验
原文链接:https://www.imooc.com/article/15640 来源:慕课网 我的毕设选择了大数据方向的题目.大数据的第一步就是要拿到足够的数据源.现实情况中我们需要的数据源分布在不 ...
- ETL工具总结
ETL的考虑 做 数据仓库系统,ETL是关键的一环.说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具.回忆一下工作这么些年来,处理数据迁移.转换的工作倒 还真的不少.但是那些工 ...
- 开源ETL工具kettle系列之常见问题
开源ETL工具kettle系列之常见问题 摘要:本文主要介绍使用kettle设计一些ETL任务时一些常见问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案 1. J ...
- 几款开源的ETL工具及ELT初探
ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract).转换(transform).加载(load)至目的端的过程.ETL 是构建数据仓 ...
- 大数据之ETL工具Kettle的--1功能介绍
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行. 说白了就是,很有必要去理解一般ETL工具必备的特性和功能,这样才更好的掌握Kettle的使用. ...
随机推荐
- Spinner控件详解
Spinner控件详解 效果图 修改Spinner样式 在介绍之前,先看一下系统原生的样式 6.x & 5.x系统样式 4.x系统样式 官方文档 XML属性 方法 描述 android:dro ...
- 【mybatis深度历险系列】mybatis中的动态sql
最近一直做项目,博文很长时间没有更新了,今天抽空,学习了一下mybatis,并且总结一下.在前面的博文中,小编主要简单的介绍了mybatis中的输入和输出映射,并且通过demo简单的介绍了输入映射和输 ...
- PGM:贝叶斯网的参数估计2
http://blog.csdn.net/pipisorry/article/details/52599321 没时间看了,下次再看... 具有共享参数的学习模型 全局参数共享 局部参数共享 具有 共 ...
- 重新安装nginx注意事项
记得清理/etc/nginx/sites-enabled/default
- apply函数用法
procedure: (apply proc arg1 ... args) Proc must be a procedure and args must be a list. Calls proc ...
- [uwsgi]使用建议(类似最佳实践)
看了下uwsgi官方的一个使用建议,之前都是直接参考了下django文档中那个比较简单的配置或者就写了个能运行的配置,么有注意很多细节问题,这里学习下,把需要的配置添加到项目配置中. 1 http a ...
- INV 调试: 如何获取库存物料事务处理调试信息
1. 按如下方式设置系统配置文件值: 系统配置文件值 地点/用户/应用/职责层配置文件值 --汇总 FND: 启用调试日志 是 FND:调试日志层级 陈述 INV: 调试跟踪: 是 IN ...
- Android程序崩溃异常处理框架
目前我已经把框架放在了github了,地址如下:https://github.com/msdx/android-crash 使用方法见github上面的README.md. 本项目相关jar包已发布在 ...
- Ubuntu15.10下如何使用EasyGui模块开发Python GUI
偶然的一个机会,发现了github上的这个开源的项目,easygui for python(一个基于TKinter的模块) 感觉很是惊讶,原来python也可以这么简单的开发出一些GUI界面(究其原因 ...
- A*寻路算法入门(二)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...