如何用etl工具kettle生成拉链表

 我来答
huanglenzhi
2017-12-03 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517195
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部

拉链表是在数据仓库中常见的表,主要用还存储不按时间变化的表,比如客户基本信息表。

下面先建两个实例表,user_info和user_info_l,其中user_info_l为拉链表。

user_info表及数据:

user_info_l表及转换后的数据:

kettle的设计其实很简单,就一个“表输入”一个“维度查询/更新

下面来看一下表输入的配置:

这个很简单,但是一定要有个基本表的数据日期

下面几个是“维度查询/更新”的配置:

下面介绍一下设置中的关键地方,依次如下:

1.不钩选的话变化的数据不会插入,至于不勾选时的用途,大家可以研究一下。

2.这里是创建每个版本关键字,基本就是源表的主键。

3.这里是要更新的字段,除了源表关键字,其他都选好了。

4.截图的时候忘了到几了。。。

5.kettle自动给啦链表生成的主键。

6.代理关键字获取的方法。

7.每条记录的版本号,每变化依次一个版本号。

8.根据哪个字段判断是哪天更新的,也可以使用系统时间。

9.拉链的最早开始日期,第一次插入空表时也是这个日期。

10.拉链的最晚结束日期,更新的字段都使用这个值,被更新后变为更新的日期,可以参考上面图中user_info_l里的数据。

我在用的时候发现了一个问题,不知道是bug,还是kettle有意为之。就是在插入拉链表时,会产生一条代理主键为0的空记录。可能是bug,也可能是kettle为防止数据出现问题,强制让其他字段为可以为空。

要解决这个问题很简单,只需要在加一个删除的trans即可:

生成记录的配置如下:

然后把两个trans放到一个job里即可,job如下图:

至此,拉链表便创建完成。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式