kettle入门(七) 之kettle增量方案(一)全量比对取增量-根据唯一标示


引:

ods有个工程表来自于上游系统,数据量不大 十几万,下游系统需要此数据,并且需要每天提供截止当天的增量数据 要求每条数据给出数据变化时间及标示,即数据若是插入 有插入时间和插入标示 若是修改 有修改时间和修改标示 若是删除需逻辑删除、有删除标示且有删除时间

解决:

kettle的转换ktr里有一个图元叫做合并记录,可以把两个表输入分为源和目的根据唯一标示 进行全量比对。由此,我们得到增量的数据流,再写入到RDBMS里,即可以实现该需求。实现功能的ktr如下图:

1 输入源 合并记录

上图,最左侧是两个表输入,上面一个cpmis 是上游系统 下面一个被 merge rows挡住了,名字是odso

cpmis

SELECT

ITEMID,

ITEMCODE,

ITEMPLANCODE,

ITEMNAME,

DEMANDID,

ITEMPROPERTY,

COMPANYID,

MANAGELEVELID,

SPECIALSMALLTYPEID,

PLANTYPEID,

CONSTRUCTPROPERTYID,

AREAID,

ASSISTANTTYPEID,

CONSTRUCTTYPEID,

FEEDEPARTMENTID,

..... FROM PROJECT_AH.ITEMINFO order by ITEMID

odso

SELECT

ITEMID,

ITEMCODE,

ITEMPLANCODE,

ITEMNAME,

DEMANDID,

ITEMPROPERTY,

COMPANYID,

MANAGELEVELID,

SPECIALSMALLTYPEID,

PLANTYPEID,

CONSTRUCTPROPERTYID,

AREAID,

ASSISTANTTYPEID,

CONSTRUCTTYPEID,

FEEDEPARTMENTID,

..... FROM odso.ITEMINFO order by ITEMID

2 值映射

如下图, 将输入源与目的源的每个字段数据根据唯一字段比较后 到值映射图元,使用字段名 为起的后面用到的一个变量名(可任意起),源值列为系统默认

1 代表输入源与目标源比较后删除的数据标志 2 是输入源新增 3 是输入源更新 4是不变 目标值 是自己起的名字 可以根据需要不变 或修改

3 第一次过滤无效记录

如下图,条件 flagfield is not null (后面没显示完),若条件成立发送给下一步zh_check_date,若不成立发送给空操作。

4 新增数据判断add2

如下图,zh_check_date 为获取当前的系统时间变量。add2 图元打开为 画圈的图 左侧的地方 ,条件 flagfield  = add_rec ,若成立及发送数据到中间画圈的add图元,若不成立则 发送数据到mod_del图元 (矩形红框) 假设为true数据到 add图元,打开 即是下图右侧 部分 填写需要插入的数据字段 再到insert图元 ,即可把输入源比目标源多的新数据更新到目标表来 并且加上时间戳。

5 修改或删除 mod_rec

如下图,假设数据从add2发送而来, 打开矩形框 mod_del 条件flagfield = mod_rec 若true 则发送到 update mapping 若flase 则发送到delete mappinig ,假设是更新,则右侧 的查询关键字 是 更新的比较字段 即是一开始合并记录的比较字段 ,更新字段就是 除了比较字段之外的其他字段。这样数据就可以从 输入源更新到目标源。

6 删除数据 delete mapping

如下图,假设数据流到了 delete mapping ,则 只需要根据比较字段把 目标表的时间戳更新 和 状态更新为del_rec即可,下图zh_check_type 为flag_field的值

7 数据结果

zh_check_type 和check_date已更新为

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-31 02:33:07

kettle入门(七) 之kettle增量方案(一)全量比对取增量-根据唯一标示的相关文章

kettle入门(七) 之kettle增量方案(一)全量比对取增量-依据唯一标示

引: ods有个project表来自于上游系统,数据量不大 十几万,下游系统须要此数据,而且须要每天提供截止当天的增量数据 要求每条数据给出数据变化时间及标示,即数据若是插入 有插入时间和插入标示 若是改动 有改动时间和改动标示 若是删除需逻辑删除.有删除标示且有删除时间 解决: kettle的转换ktr里有一个图元叫做合并记录.能够把两个表输入分为源和目的依据唯一标示 进行全量比对.由此.我们得到增量的数据流,再写入到RDBMS里,即能够实现该需求.实现功能的ktr例如以下图: 1 输入源 合

kettle入门(五) 之kettle读取gz格式文本详细案例

背景: ods平台的一个很简单的数据共享需求: 运营商的某个部门每天定时送gz格式的HLR文本数据到FTP服务器的固定目录下.然后ods每天定时去取然后录入到RDBMS的表中,开放给其他系统查询调用,这种称作数据库表接口. 需求很简单,但是因为以前只用过文本输入做txt 或者csv.excel ,所以一时就想怎么先把gz格式解压出来,再用文本文件输入,首先想到了用 kettle3自带的unzip 功能 如下图: 结果发现 解压不了gz格式的,后来又想到使用shell命令,但是在后台putty可以

xtrabackup 备份mysql数据库三: innobackupex 测试一个全量和两个增量的备份恢复测试

## 查看当前库中表的数据 ([email protected]) [test]>select count(*) from t_innodb; +----------+ | count(*) | +----------+ |        0 | +----------+ 1 row in set (0.00 sec) ## 执行插入数据操作,该操作在全备之后执行完成 ([email protected]) [test]>call addTest(100000,0); ## 执行全库备份 #

增量部署和全量部署

应用部署是工程人员(包括开发.测试和运维)每日面对的重要问题之一.尤其是在应用交付频率越来越高的当下,工程人员经常需要花费巨大的成本和心血来完成频繁的应用部署工作.在过去半年里面,我们接触了大量的企业客户,他们来自不同的行业,有着不同的规模,但我们发现他们在应用部署上面都有一个类似的困惑,即是应该选择增量部署还是全量部署.这里,我们希望展开阐述一下我们的观点.在开始讨论这个问题前,让我们首先重新明确两个问题. 部署(deployment)还是发布(release)?部署一般指把应用或者服务"安装

linux自动代码增量备份 结合 全量备份

需求说明 系统环境:linux(centos7)备份内容:增量备份 结合 全量备份 公司中的生产服务器数据非常重要,所以我们需要通过备份服务器将生产服务器的数据进行备份. rsync的增量备份,不单单会同步新增的内容,就连删除的内容也会同步.假如管理代码人员误操作将代码误删除,那么备份服务器检测到备份原的数据产生变化后,也会与其同步,此时生产服务器与备份服务器的代码都会丢失. 增量备份要求的频率较高,但在生产与备份服务器之间的网络资源消耗较少,所以我们可以使用rsync来做增量备份,然后结合在备

kettle入门(六) 之kettle抽取变量表名表

背景: ods平台的一个很简单的数据抽取需求: 上游系统有一个月表,每个月出上个月数据并放在新建的月表里.例如:20150401出3月份表和数据 TB_B_FT_BROADBAND_201503, 20150501出4月份表和数据 TB_B_FT_BROADBAND_201504.而ods需要每月初等他们数据出来后再抽取过来. 需求很简单,用kettle最常见的表输入和输出抽取即可,但是表输入的select 语句里面的表名需要使用变量. 解决: 使用job kjb如下 完成此需求,如下图,步骤如

kettle入门(四) 之kettle中取任意时间变量的使用详细案例

引: 在数据仓库项目中 有一类和生产或者外围系统交互的接口称为FTP文件接口, 用kettle开发.实现这种接口 配置脚本时,经常需要用时间变量来取或者上传FTP里面 固定格式文件名的文本,例如 生产系统定时 每天推送前天的数据文本 到某个FTP服务器 2014-04-28 推送文件名 2015-04-26.txt.gz 2014-04-27 推送文件名 2015-04-25.txt.gz 实现: kettle 版本3.0.4,如下图所示: 所需要三个功能组件 1 获取系统信息 2 java s

kettle入门(三) 之kettle连接hadoop&hdfs图文详解(转)

1 引言: 项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把源系统的文本数据load到hadoop环境中 2 准备工作: 1 首先 要了解支持hadoop的Kettle版本情况,由于kettle资料网上较少,所以最好去官网找,官网的url: http://wiki.pentaho.com/display/BAD/Configuring+Pentaho+for+your+Hadoop+Distro+and+Version 打开这个url 到页面最下面的底端,如下图: ar

kettle入门(三) 之kettle连接hadoop&hdfs图文详解

1 引言: 项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把原始文本数据load到hadoop环境中 2 准备工作: 1 首先 要了解支持hadoop的Kettle版本情况,由于kettle资料网上较少,所以最好去官网找,官网的url: http://wiki.pentaho.com/display/BAD/Configuring+Pentaho+for+your+Hadoop+Distro+and+Version 打开这个url 到打开页面最下面的底端如下图: arc