引:

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





解决:

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,若不成立发送给空操作。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2hhaTc5OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


4 新增数据推断add2

例如以下图,zh_check_date 为获取当前的系统时间变量。

add2 图元打开为 画圈的图 左側的地方 ,条件 flagfield  = add_rec ,若成立及发送数据到中间画圈的add图元,若不成立则 发送数据到mod_del图元 (矩形红框) 如果为true数据到 add图元,打开 即是下图右側 部分 填写须要插入的数据字段 再到insert图元 ,就可以把输入源比目标源多的新数据更新到目标表来 而且加上时间戳。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2hhaTc5OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

5 改动或删除 mod_rec

例如以下图,如果数据从add2发送而来。 打开矩形框 mod_del 条件flagfield = mod_rec 若true 则发送到 update mapping 若flase 则发送到delete mappinig 。如果是更新,则右側 的查询keyword 是 更新的比較字段 即是一開始合并记录的比較字段 ,更新字段就是 除了比較字段之外的其它字段。这样数据就能够从 输入源更新到目标源。


6 删除数据 delete mapping

例如以下图。如果数据流到了 delete mapping 。则 仅仅须要依据比較字段把 目标表的时间戳更新 和 状态更新为del_rec就可以,下图zh_check_type 为flag_field的值

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2hhaTc5OA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

7 数据结果

zh_check_type 和check_date已更新为

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

  1. Mysql 增量备份和全量备份

    全量备份: # vim /root/DBFullyBak.sh //添加以下内容 #!/bin/bash # Program # use mysqldump to Fully backup mysql ...

  2. Sqoop(四)增量导入、全量导入、减量导入

    增量导入 一.说明 当在生产环境中,我们可能会定期从与业务相关的关系型数据库向Hadoop导入数据,导入数仓后进行后续离线分析.这种情况下我们不可能将所有数据重新再导入一遍,所以此时需要数据增量导入. ...

  3. xtrabakcup基本用法 安装、全量备份恢复、增量备份恢复

    xtrabackup备份原理以及工作流程 备份流程日志分析:1.##读取mysql配置文件2.## 扫描innodb日志lsn并复制inndodb系统表空间3.## 缓冲写出到数据文件并锁表4.## ...

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

    1 引言: 项目最近要引入大数据技术,使用其处理加工日上网话单数据,需要kettle把源系统的文本数据load到hadoop环境中 2 准备工作: 1 首先 要了解支持hadoop的Kettle版本情 ...

  5. 10.Solr4.10.3数据导入(DIH全量增量同步Mysql数据)

    转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.创建MySQL数据 create database solr; use solr; DROP TABLE ...

  6. Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录

    在日常的linux运维工作中,大数据量备份与还原,始终是个难点.关于mysql的备份和恢复,比较传统的是用mysqldump工具,今天这里推荐另一个备份工具innobackupex.innobacku ...

  7. Centos 6.9 安装xtrabackup-2.4.8 通用包,yum安装,全量备份,增量备份

    xtrabackup-2.4.8的安装及使用 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备 ...

  8. hadoop项目实战--ETL--(三)实现mysql表到HIVE表的全量导入与增量导入

    一 在HIVE中创建ETL数据库 ->create database etl; 二 在工程目录下新建MysqlToHive.py 和conf文件夹 在conf文件夹下新建如下文件,最后的工程目录 ...

  9. MySQL5.7.18 备份、Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份,数据导入导出

    粗略介绍冷备,热备,温暖,及Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份 --备份的目的 灾难恢复:意外情况下(如服务器宕机.磁盘损坏等)对损 ...

随机推荐

  1. ClientScript.RegisterClientScriptBlock 不执行

    ClientScript.RegisterClientScriptBlock 不执行 页面中 form标签必须加入 runat=server

  2. 也来写写基于单表的Orm(使用Dapper)

    前言 这两天看园子里有个朋友写Dapper的拓展,想到自己之前也尝试用过,但不顺手,曾写过几个方法来完成自动的Insert操作.而对于Update.Delete.Select等,我一直对Diction ...

  3. bind 简单配置dns

    一. 安装apt-get install bind9 apt-get install bind9-host dnsutils apt-get install bind9-doc 二.修改本机配置我们要 ...

  4. v4l2 spec 中文 Ch01【转】

    转自:http://blog.csdn.net/wuhzossibility/article/details/6638245 目录(?)[-] Chapter 1 通用APICommon API El ...

  5. python中函数和生成器的运行原理

    #!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat # python的函数是如何工作的 # 比方说我们定义了两个函数 def ...

  6. 并发策略-CAS算法

    对于并发控制而言,我们平时用的锁(synchronized,Lock)是一种悲观的策略.它总是假设每一次临界区操作会产生冲突,因此,必须对每次操作都小心翼翼.如果多个线程同时访问临界区资源,就宁可牺牲 ...

  7. [BZOJ1193][HNOI2006]马步距离 大范围贪心小范围爆搜

    1193: [HNOI2006]马步距离 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1988  Solved: 905[Submit][Statu ...

  8. cl编译C文件的环境变量修改

    添 加环境 变量INCLUDEC:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt;C:\Program Files (x8 ...

  9. android 效果

    1.TextView 有边界的水波效果: android:background="?android:attr/selectableItemBackground" 无边界的水波效果: ...

  10. Python的程序结构[2] -> 类/Class[6] -> 内建类 map

    内建类map / Built-in Type map 关于内建类 map 是一个内建的类,能够返回一个 map 的 obj.map 的第一个参数为一个可执行函数,后续参数均为可迭代对象,map 会分别 ...