使用kettle制作拉链表

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

下面先建两个实例表,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如下图:

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

如果在使用中,有疑问的同学可以联系我QQ:415426434.

时间: 2024-10-03 12:56:58

使用kettle制作拉链表的相关文章

数仓1.4 |业务数仓搭建| 拉链表| Presto

电商业务及数据结构 SKU库存量,剩余多少SPU商品聚集的最小单位,,,这类商品的抽象,提取公共的内容 订单表:周期性状态变化(order_info) id 订单编号 total_amount 订单金额 order_status 订单状态 user_id 用户id payment_way 支付方式 out_trade_no 支付流水号 create_time 创建时间 operate_time 操作时间 订单详情表:(order_detail) order_detail.order_id 是要一

hive 中的拉链表 1

hive中拉链表 在有些情况下,为了保持历史的一些状态,需要用拉链表来做,这样做目的在可以保留所有状态的情况下可以节省空间. 拉链表适用于以下几种情况吧 数据量有点大,表中某些字段有变化,但是呢变化的频率也不是很高,业务需求呢又需要统计这种变化状态,每天全量一份呢,有点不太现实, 不仅浪费了存储空间,有时可能业务统计也有点麻烦,这时,拉链表的作用就提现出来了,既节省空间,又满足了需求. 一般在数仓中通过增加begin_date,en_date来表示,如下例,后两列是start_date和end_

拉链表

拉链表是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史.记录一个事物从开始,一直到当前状态的所有变化的信息. 优点:为了节省数据库的空间 用处:记录一个事物从开始到现在所有的状态信息. 1采集原系统的全量数据到表new1. 2从历史表中获取昨日全量数据到表new2. 3从new1和new2中比较出新增和改变的数据,也就是增量数据到表new3. 4从new1和new2中比较出来改变的数据,到表new4. 5将new3的数据插入到历史表中,这些是新增记录,startda

极限存储--历史拉链表(上)

在数据仓库的数据模型设计过程中,经常会遇到这样的需求: 1. 数据量比较大;2. 表中的部分字段会被update,如用户的地址,产品的描述信息,订单的状态等等;3. 需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态,   比如,查看某一个用户在过去某一段时间内,更新过几次等等;4. 变化的比例和频率不是很大,比如,总共有1000万的会员,每天新增和发生变化的有10万左右;5. 如果对这边表每天都保留一份全量,那么每次全量中会保存很多不变的信息,对存储是极

基于hive的拉链表设计实现

参考http://lxw1234.com/archives/2015/08/473.htm 测试数据 order_2015-08-21 1 2015-08-18 2015-08-18 创建2 2015-08-18 2015-08-18 创建3 2015-08-19 2015-08-21 支付4 2015-08-19 2015-08-21 完成5 2015-08-19 2015-08-20 支付6 2015-08-20 2015-08-20 创建7 2015-08-20 2015-08-21 支付

拉链表流水表

1. 全量表:每天的所有的最新状态的数据, 2. 增量表:每天的新增数据,增量数据是上次导出之后的新数据. 3. 拉链表:维护历史状态,以及最新状态数据的一种表,拉链表根据拉链粒度的不同,实际上相当于快照,只不过做了优化,去除了一部分不变的记录而已,通过拉链表可以很方便的还原出拉链时点的客户记录. 4. 流水表: 对于表的每一个修改都会记录,可以用于反映实际记录的变更. 拉链表通常是对账户信息的历史变动进行处理保留的结果,流水表是每天的交易形成的历史: 流水表用于统计业务相关情况,拉链表用于统计

Hive拉链表实现

拉链表测试: 有如下测试数据 --2019/12/1号订单的全量数据 id status create_time operation_time 1 待支付 2019-12-01 2 待支付 2019-12-01 3 已支付 2019-12-01 --2019/12/2号订单的全量数据 id status create_time operation_time 1 待支付 2019-12-01 2 已支付 2019-12-01 2019-12-02 3 已支付 2019-12-01 4 待支付 20

hive 拉链表

-- This example demonstrates Type 2 Slowly Changing Dimensions in Hive.-- Be sure to stage data in before starting (load_data.sh)drop database if exists type2_test cascade;create database type2_test;use type2_test; -- Create the Hive managed table fo

Hive数据模型之历史拉链表

http://lxw1234.com/archives/2015/04/20.htm http://lxw1234.com/archives/2015/08/473.htm 原文地址:https://www.cnblogs.com/zbw1112/p/12100920.html