数据清洗小记(11):Kettle_利用设置变量实现数据增量(小例)

【背景】

利用kettle工具,完成某表的增量工作。

【解决】

利用模块完成即可,如下简图:

【实验】

先手工准备一个实验环境:

准备基本完成如下效果:

select t.*, t.rowid from EMP_ETL t

select max(hiredate) maxsj from EMP_ETL

我们验证将2015年10月22日的数据插入目标表中。

创建目标表:

create table EMP_ETL_1 as select * from EMP_ETL t where 1=2;

此时EMP_ETL_1数据为空,我们只插入hiredate 为2015/10/22的数据。

可以看到有两条数据符合这个条件,如下图所示:

编写时间戳ktr转换过程,把原表中最大的hiredate作为变量,如下图:

下面在“表输入”环节中,使用传递过来的${MAXSJ}作为条件,完成向目标表插入数据,简要流程如下:

执行转换,完成数据插入,简图如下:

补充:这只是一个简单的举例,对于使用时间戳的方式来完成增量时,这个实验中的方法如果每次都是全表max,当数据量特别大时,效率将大打折扣。而此时,我们就需要添加一个时间戳记录表,另添加一个时间戳字段,每次抽取结束后,将每次抽取后最晚一条记录的时间戳时间记录到时间戳表中,然后每次查询起点时间时只需要从时间戳表中提取即可。

小知识,简而记之。

蓝的成长记系列_20151022

原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。

蓝的成长记——追逐DBA(1):奔波于路上,挺进山东

蓝的成长记——追逐DBA(2):安装!安装!久违的记忆,引起我对DBA的重新认知

蓝的成长记——追逐DBA(3):古董上操作,数据导入导出成了问题

蓝的成长记——追逐DBA(4):追忆少年情愁,再探oracle安装

蓝的成长记——追逐DBA(5):不谈技术谈业务,恼人的应用系统

蓝的成长记——追逐DBA(6):做事与做人:小技术,大为人

蓝的成长记——追逐DBA(7):基础命令,地基之石

蓝的成长记——追逐DBA(8):重拾SP报告,回忆oracle的STATSPACK实验

蓝的成长记——追逐DBA(9):国庆渐去,追逐DBA,新规划,新启程

蓝的成长记——追逐DBA(10):飞刀防身,熟络而非专长:摆弄中间件Websphere

蓝的成长记——追逐DBA(11):回家后的安逸,晕晕乎乎醒了过来

蓝的成长记——追逐DBA(12):七天七收获的SQL

蓝的成长记——追逐DBA(13):协调硬件厂商,六个故事:所见所感的“服务器、存储、交换机……”

蓝的成长记——追逐DBA(14):难忘的“云”端,起步的hadoop部署

蓝的成长记——追逐DBA(15):以为FTP很“简单”,谁成想一波三折

蓝的成长记——追逐DBA(16):DBA也喝酒,被捭阖了

蓝的成长记——追逐DBA(17):是分享,还是消费,在后IOE时代学会成长

蓝的成长记——追逐DBA(18):小机上WAS集群故障,由一次更换IP引起

蓝的成长记——追逐DBA(19):路上的插曲:触碰“框架”与“软件系统”

蓝的成长记——追逐DBA(20):何故缘起,建库护航

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

时间: 2024-11-04 06:54:50

数据清洗小记(11):Kettle_利用设置变量实现数据增量(小例)的相关文章

Kettle_设置变量的两种方法

一个复杂的kettle作业一般包括很多子作业和转换,在主作业Start后通常会添加一个[设置变量]的流程,该流程的功能是为所有流程的公共变量设置通用值.       主作业添加的[设置变量]针对的是所有流程,如果需要运行某个在作业,就需要将其引用的变量值改为常量才能运行,想当年麻烦,本文介绍两种方法规避该问题 方法一:在子作业中添加设置变量流程 下图中table changlog exists?流程使用变量${cl},但是设置${cl}变量的值在主作业执行,所以执行本作业时会报错  解决方法:在

数据清洗小记(15):DECODE利用sign函数做大小值判断

[背景] 对某业务数据处理时,需要判断两个数据字段的大小,保留较大的数据存入到指定字段下面.考虑使用decode函数和sign函数来实现这个目的. [解决] 1.decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值) 2.sign()函数:根据某个值是0.正数.负数,分别返回0.1.-1 3.为获得两个字段的较大值或较小值: A>B, A-B>0, sign(A-B)=1, 获得大值即A, decode(sign(A-B),1,A,B) A<B, A-B<

c++11线程之条件变量condition_variable(二)

题目:编写一个程序,开启3个线程,这3个线程的ID分别为A.B.C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示:如:ABCABC-.依次递推. 采用C++11实现: [cpp] view plaincopyprint? #include<iostream> #include<thread> #include<mutex> #include<condition_variable> using namespace std; mut

《软件调试的艺术》笔记--检查和设置变量

1.使用print命令查看变量值 使用print命令(简写为p)可以查看变量值. 使用如下的程序1进行测试. #include <stdio.h> struct node{ int index; struct node* next; }; int main(void) { struct node head; head.index = 1; head.next = NULL; int i; for(i=0; i<3; i++){ head.index++; } return 0; } (g

检查和设置变量

转自 http://blog.csdn.net/todd911/article/details/32316985 1.使用print命令查看变量值 使用print命令(简写为p)可以查看变量值. 使用如下的程序1进行测试. [cpp] view plaincopy #include <stdio.h> struct node{ int index; struct node* next; }; int main(void) { struct node head; head.index = 1;

【iOS开发-44】通过案例谈iOS代码重构:合并、格式化输出、宏变量、利用数组字典存储数据,以及利用plist的终极知识

首先我们今天的案例就是如下5个页面通过上一张下一张来切换: (1)第一步,基本是以很傻很直接的方式来创建,这里用到的主要点有: --把对象变量设置为全局变量使得可以在其他方法中调用来设置它们的属性 --设置了一个全局变量index,默认是0,然后通过增加减少这个index值并结合switch来调用不同的数据. --利用先调用一次change方法初始化页面,使得页面定格在第一帧. --利用按钮的enabled属性来设置按钮是否可以被点击,然后结合index的值分别在第1张和第5张时分别把上一张和下

SpringBoot系列——利用系统环境变量与配置文件的分支选择实现“智能部署”

前言 通过之前的博客:SpringBoot系列——jar包与war包的部署,我们已经知道了如果实现项目的简单部署,但项目部署的时候最烦的是什么?修改成发布环境对应的配置!数据库连接地址.Eureka注册中心地址.Redis服务地址等,部署环境不一样,打包的时候就要改成对应的配置:常用的环境有本地开发环境dev,本地测试环境dev-test,生产测试环境prod-test,生产环境prod: 开发的时候我们用dev,项目直接运行,不用改配置:发布本地测试环境的时候,打包之前我们要先改成对应配置:上

KETTLE设置变量

一.kettle变量类型 kettle变量分为: 1.环境变量 通过 set variables组件设置变量,范围可以是:JVM变量.作业变量.父作业变量.根作业变量.使用时通过${var}或 %%var%%变量方式引用变量 2.属性文件变量 在.kettle目录下的kettle.property文件中设置,可kettle中可以引用 3.命令行参数(相当于位置参数) 命令行参数是指用pan执行转换时传入的参数,在sql中用可以用?占位,也叫位置参数 注意: 不管哪种参数都可以在sql中用${va

开发个人电子商城11(idea设置jdk)

1: 选择 project default 下的 project structue 2: 选择sdk 点击绿色的加号,选择idk 安装的路径即可 3: 再跑到project节点下 选择 1.7 即可  注意 下面也选7 开发个人电子商城11(idea设置jdk)