kettle spoon判断增量更新_kettle增量更新设计

本文介绍了Kettle中增量更新的设计方法,包括增加不更新、更新不增加、增加也更新三种场景,并提供了具体的步骤配置示例。通过设置时间戳作为增量判断条件,结合Insert/Update步骤,实现高效的数据同步。
摘要由CSDN通过智能技术生成

kettle

增量更新设计

ETL

中增量更新是一个比较依赖与工具和设计方法的过程

, Kettle

中主要提供

sert/

Update

步骤

, Delete

步骤和

Database Lookup

步骤来支持增量更新增量更新的设计方法也

是根据应用场景来选取的

,

虽然本文讨论的是

Kettle

的实现方式

,

但也许对其他工具也有

一些帮助。

1

、增量分类

应用场景增量更新按照数据种类的不同大概可以分成:

1

增加

,

不更新

2

更新

,

不增加

3

即增加也更新

4

有删除

,

有增加

,

有更新

其中

1,2,3

种大概都是相同的思路

,

使用的步骤可能略有不同

,

通用的方法是在原数据库

增加一个时间戳

,

然后在转换之后的对应表保留这个时间戳

,

然后每次抽取数据的时候

,

先读

取这个目标数据库表的时间戳的最大值

,

把这个值当作参数传给原数据库的相应表

,

根据这

个时间戳来做限定条件来抽取数据

,

抽取之后同样要保留这个时间戳

,

并且原数据库的时间

戳一定是指定默认值为

date

当前

(

以原数据库的时间为标准

),

抽取之后的目标数据库的时

戬要保留原来的时间戳

,

而不是抽取时候的时间。

对于第一种情况

,

可以使用

Kettle

Insert/ Update

步骤

,

只是可以勾选

Don' t

perform any update

选项

,

这个选项可以告诉

Kettle

你只会执行

Insert

步骤。

对于第二种情況可能比较用在数据出现错误然后原数据库有一些更新

,

相应的标数据库

也要更新

,

这时可能不是更新所有的数据

,

而是有一些限定条件的数排你可以使用

Kettle

Update

步骤来只执行更新。关于如何动态的执行限定条件

,

可以参考前一篇文章。

第三种情况是最为常见的一种情況

,

使用的同样是

Kettle

Insert/ Update

步骤

,

是不要勾选

Don' t perform any update

选项第四种情況有些复杂

,

后面专门讨论:

对于第

1,2,3

种个以参考下面的例子这个例子假设原数据库表为

customers,

含有一个

id, firstname,1 astnameage

字段

,

主键为

id,

然后还加默认值为

sysdate

的时间戳字段。

转换之后的结果类似

:id, firstname,1 astname,age, updatedate.

整个设计流程大概如:

其中第一个步骤的

sql

大概如下模式:

Select

max(updatedate)

from

target_customer

;

你会注意到第二个步骤和第一个步骤的连接是黄色的线,

这是因为第二个

table

input

步骤把前面一个步骤的输出当作一个参数来用,所有

Kettle

用黄色的线来表示,第二个

table

input

sql

模式大概如下:

Select

field1

,

field2

,

field3

from

customers

where

updatedate

>

?

后面的一个问号就是表示它需要接受一个参数,你在这个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值