etl 增量数据方式,一般有2种,一是取当前表中时间字段的最大,或者直接取上一次增量后产生的sysdate,二是用触发器等工具把变化的数据捕获,然后进行插入更新。

本案例使用数据库表上次增量产生的sysdate的方式进行增量更新。

1 打开kettle,文件->新建->转换,然后在右侧面板中右键,转换设置,在这里可以修改转名称。如图:


2 在左侧面板的核心对象中的输入标签里选择表输入,托到右侧面板,重复操作一次,这样就有2个输入表了。然后在左侧面板输出里选择表输出,然后拖到右侧面板。然后在选择第一个表输入,然后按shift,托到第二个表输入,建立一个hop,同样为第二个表输入和表输出之间建立连接。

3接着开始我们的设计,在第一个表输入中设置如下图:


在上图的步骤名称,输入该步骤的名称,由于我们使用的是jdbc,已经建好,我就直接选择了其中一个。在sql中输入上次运行的sysdate,(也就是今天),这个用于后续的增量时间字段,此时预览可以看到就只有一列的时间字段。

然后在第二个表输入做如下图操作:


步骤名称和数据库连接如上一步操作,在sql中从点击获取sql查询语句中选择需要进行增量操作的表,然后确认需要显示列名,出现没有where条件的sql语句,然后自己在sql中增加where 条件用?代表从上一个步骤中传过来的变量,在下面替换sql语句里的变量,打勾,确保到时问号符号能用被替换,从步骤插入数据的下拉菜单中选择上一步操作,在执行每一行上打勾。

第三部对输出表进行设置:


在上图中步骤名称和数据库连接同上,目标模式选择数据仓库的用户,目标表选择需要把数据插入到什么表中,如果是增量更新,不是临时表的话,千万不要在裁剪表上打勾,这个用于删除表中的数据。在数据字段中,直接点击添加映射,然后选择需要映射的字段。这也就完成了映射操作。