应用Pentaho Data Integration(Kettle) 6.1 进行数据抽取以及指标计算(一、同构数据抽取)

一、概述

本案例是一个小型数据抽取分析类系统,通过抽取数据共享中心中生产管理系统、营销管理系统、计量自动化系统的配网台区(一个台区一个配变)的相关数据进行整合,完成有关台区的50多个字段按照日、月、多月等维度的集中计算展示,其中有17个指标字段需要系统进行自动计算,并于每天对不同部门关注的台区指标进行超标告警,除开这些基本要求之外,用户还要求支持历史报表的查询以及可以对部分计算参数进行配置修改,甚至可以修改计算参数后对历史报表产生影响。

经过数据量分析,配变基本数据方面,生产有300多万个功能位置,其中只有1.4万为配电变压器,营销系统有1万多个配变与其对应,计量系统有9000多个计量点与营销系统的配变对应,最终取得三个系统都能对应上的配变有8000多个。配变瞬时计量数据方面,计量系统的每个计量点会每15分钟产生一条数据,每天共计96条,而来宾台区所有的计量点所产生的数据每天有150万条(大约占500M的硬盘空间)。

基于需求与数量上的分析情况来看,为满足上述需求,我采取的方案是,每天通过ETL(kettle)工具从数据共享中心抽取台区的基本数据并保存在本系统中,而计量瞬时数据抽取出来后,直接对其中17个指标字段按照每日、每月(每月1号触发)二个层级进行预计算,计算结果以及引用参数都保存在本系统,完成后则将瞬时计量数据抛弃,多月的情况则由系统功能依据用户输入的查询条件基于每日、每月的结果动态计算后展现(可采用报表平台实现)。

二、台区基础数据的抽取(同构抽取)

基于Kettle的处理程序主要分成转换(ktr)和作业(kjb),2大类进行排序和调度,作业内部可以包含若干作业和若干转换。

台区基础数据的抽取过程比较通用,都基本是从数据共享中心全表抽取过来,并覆盖本地全表,抽取前需要检测数据共享中心是否正常抽取了足够的新数据,以保证本系统不会因为数据共享中心的抽数不正常而出现问题,每个表的抽取作业(kjb)如下图所示:

该作业负责抽取生产系统的设备功能位置表,主要分成3个转换(ktr)来保证,在出现因网络或者对方数据库问题而出现的问题时将进行有限次的重试。当转换出现报错时,程序则会进入图中左下方的红叉路径,然后设置计数器变量j,每次错误j+1,之后则会马上进入一个检测控件,当重试次数尚未超过阀值时则会进入等待控件(超过时路径未画,默认),等待数秒后则重新尝试执行转换,当执行成功后则对该计数器进行清零。

思路回到正常的抽取过程,该作业按照通用多表的参数化的标准来实现,在作业执行前首先先设置表名变量以及过滤条件变量。

接下来进入具体的转换,该转换负责从本库读取现有数据量,点开这个转换会看到这个转换关联到当前目录下的一个转换(ktr)文件,具体的处理流程在其中。

进入该转换,该转换共有2个控件来完成工作。

表输入负责从数据库读取相关的数据并将结果集发送到下一步,取数前需要先设置数据库连接,勾选’替换SQL语句的变量’后可以用${XXX}语法将之前设置好的表名变量读取到该控件中执行,count(1)-0可以给予在进行每天抽数的比较时的一个允许偏差幅度,例如今天待抽数据如果小于已在库中数据量10000条(count(1)-10000),则认为数据共享中心的数据不可信,则会取消本次数据抽取。

设置数据库连接,支持多种常用数据库

在设置变量这个控件中,我们可以以一个字段来赋值给一个变量,该变量将可以在后续的计算中引用,这里要注意的是变量活动类型,这里将决定该变量的可见范围(整个JVM、当前作业、当前作业的父作业、根作业),在这里我们选择当前作业即可。

下面我们进入第2个转换程序中,该程序负责获取数据共享中心的数据量。

进入该转换,该转换共有3个控件来完成工作。

表输入负责从数据库读取相关的数据并将结果集发送到下一步。

当我们其中一个控件的输出要同时发给2个后续控件的话请使用复制,不要分发,如果选择分发,则后续的控件将会分享同一份数据,而不是分别得到完整的一份数据。

在设置变量这个控件中,我们可以以一个字段来赋值给一个变量

然后我们把结果集复制到结果集,在后续的转换中他将可以被访问到

在该作业执行完成后,将查询到的数据集成平台数据量通过SQL脚本写入抽取日志表中,用自己想要的日志结构比kettle自带的简洁。

当本地的数据量以及数据集成平台上面的数据量都获取到之后,通过比较控件对2个变量进行比较。

当数据集成平台的数量不小于本地数据库的值时则进入下一个转换程序

该转换过程由2个控件来完成。

通过表输入将集成平台上的数据全部取出,表名以及过滤条件变量全部用上,取出数据后将结果集传递到表输出控件。

由表输出控件完成对本地表的清除和插入工作,表名使用目标表名变量,当勾选裁剪表选项,则等于truncate命令,效率已试过一样,可放心使用,至此,一个表的数据就完成了抽取。

因为采用了参数化,其他台区基础数据表也可以使用该作业程序进行抽取,只需改动表名变量以及条件变量即可,针对不同表名可以采用不同的查询条件,例如。

最后使用一个总作业将各个表的抽取作业串联起来,则成为一个完整的作业,下图中每个都是一个数据表的抽取过程。

未完待续……

时间: 2024-12-26 01:37:42

应用Pentaho Data Integration(Kettle) 6.1 进行数据抽取以及指标计算(一、同构数据抽取)的相关文章

Pentaho Data Integration (Kettle) 简介

Pentaho Data Integration (Kettle) 一套基于Java的开源ETL工具集,是商务智能套件Pentaho的一部分. 社区主页:http://community.pentaho.com/projects/data-integration 帮助文档:https://help.pentaho.com/Documentation 发行版 :https://sourceforge.net/projects/pentaho/files/Data%20Integration 源码

Pentaho data integration(kettle) 在Mac上启动不了

环境 MacOS Mojave (10.14.1) Pentaho Data Integration 8.2 Java 8 现象 从官方下载下来最新的安装包,解压之后,双击Data Integration,报安全问题,询问是否打开,同意并输入自己的开机密码. 然后,等了几秒之后,发现没有任何反应,再次双击Data Integration,依然没有任何相应. 解决办法 从Terminal启动 从terminal进入到解压之后的目录data-integration中,找到脚本spoon.sh,然后执

应用Pentaho Data Integration(Kettle) 6.1 进行数据抽取以及指标计算(四、每日指标的计算下)

台区负载情况计算(新增按值排序控件的使用): 台区负载情况 1.对变压器类型为干性的配变,“负载率超过80%(100%)持续时间”大于等于1小时的,计1次:一个自然月内累计有10天(含)以上的,为重载(过载). 2.对变压器类型为油浸式的配变,“负载率超过80%(100%)持续时间”大于等于2小时的,计1次:一个自然月内累计有10天(含)以上的,为重载(过载). 台区负载情况的计算流程如下图所示: 首先针对每行数据(每15分钟的值)的负载率判断其过载情况,采用javascript代码脚本控件进行

应用Pentaho Data Integration(Kettle) 6.1 进行数据抽取以及指标计算(三、指标计算参数输入)

在本系统中,针对计量系统的数据计算是最复杂的,其中需要采用多种转换以及公式计算,并且需要结合系统预置的一些计算参数以及每个台区的一些补充技术参数进行计算,计算的过程分为5大步骤(转换): 1. 根据系统时间获取到计量系统瞬时数据的表名(计量系统每天都会生成一个以日期命名的新表). 2. 从系统数据库中读入系统级的计算参数. 3. 计算每日指标. 4. 计算每日告警信息. 5. 计算每月指标(每月1号执行一次). 在实现上述5大步骤的同时,辅以清空重复数据以及自动重试机制,保证计算数据的正确性.

ETL工具 — Data Integration (Kettle) 下载安装

一.Data Integration(Kettle) 是基于java开发的一款软件,首先必须先安装JDK. 1.下载JDK安装包,下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html 点击下载按钮进入下载界面  ,根据系统选择相应的版本下载. 2.下载后安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为 C:\Program Files\Java\jdk1.8.0_112. 3.安装完

Pentaho Data Integration (二) Spoon

上一篇:Pentaho Data Integration笔记 (一):安装 介绍 Spoon Intoduction site: http://wiki.pentaho.com/display/EAI/.01+Introduction+to+Spoon Spoon 是一个图形化用户界面,用户可以通过Spoon来设计transformations(数据转换文件)和jobs(数据转换任务),transformation与jobs可以在Pan和Kitchen这两个Kettle开发的工具执行并得出结果.

Pentaho Data Integration (三) Pan

官网连接: http://wiki.pentaho.com/display/EAI/Pan+User+Documentation Pan Pan 是一个可以执行使用Spoon编辑的transformation的程序. 解压缩PDI Software.zip就得到了Pan.bat 命令行使用Pan执行Transformation 官网主要介绍Linux平台下的命令,我主要介绍Windows平台下的命令 Options 选项 格式  /option:“value” Parameters 参数 格式

Pentaho Data Integration Step: BD Procedure Call

官网连接:http://wiki.pentaho.com/display/EAI/Call+DB+Procedure 描述 调用数据库存储过程步骤允许用户执行一个数据库存储过程,并且得到结果.存储过程或者方法只能通过他们的参数返回数据,并且输出参数必须定义在数据库存储过程Parameters中. F&Q 1. 设置完成DB Procedure Call之后,报错找不到相应的存储过程 在Proc-name中点击"Find it..."按钮之后,在Proc-name文本框当中的字符

Pentaho Data Integration 界面开发

1,简介 PDI界面使用了xul技术.通过配置xul文件就可以修改界面了.其次,具体图形界面的开发也用到了eclipse swt 和 Jface包.本文记录如何修改PDI的主界面的菜单栏,并新添加的菜单栏上做一些操作. 2,PDI中的xul配置 主要的配置文件有两个spoon.xul 和 menubar.xul.它们在项目主目录的 ui 目录下.spoon.xul 中定义了主界面的菜单栏.工具栏,同时也引用了 menubar.xul <pen:include src="menubar.xu