拉链表在数仓的应用十分普遍。它会在原始的表字段里面添加两个新的字段:create_time和end_time这两个。这两个字段的日期代表的是这条数据的开始时间和结束时间,也就是数据的生命周期。
我在开发的过程中会有这么一个问题,那就是我要取某一天的数据,有说法是,也有说法说是:。区别在于end_time的时间是否取等号。这个问题我通过例子来详细理解。
举例:
有一张订单表,6月20号有3条记录:
订单创建日期 | 订单编号 | 订单状态 | create_time | end_time |
---|
2012-06-20 | 001 | 创建订单 | 2012-06-20 | 4921-12-31 |
2012-06-20 | 002 | 创建订单 | 2012-06-20 | 4921-12-31 |
2012-06-20 | 003 | 支付完成 | 2012-06-20 | 4921-12-31 |
到6月21号,表中有6条记录:
订单创建日期 | 订单编号 | 订单状态 | create_time | end_time |
---|
2012-06-20 | 001 | 创建订单 | 2012-06-20 | 2012-06-21 |
2012-06-20 | 001 | 支付完成 | 2012-06-21 | 4921-12-31 |
2012-06-20 | 002 | 创建订单 | 2012-06-20 | 4921-12-31 |
2012-06-20 | 003 | 支付完成 | 2012-06-20 | 4921-12-31 |
2012-06-21 | 004 | 创建订单 | 2012-06-21 | 4921-12-31 |
2012-06-21 | 005 | 创建订单 | 2012-06-21 | 4921-12-31 |
我要取2012-06-21这一天的历史快照数据,
也就是
如果是:
上面整张表里面的数据都可以取到。
如果是:
得出的结果是:
订单创建日期 | 订单编号 | 订单状态 | create_time | end_time |
---|
2012-06-20 | 001 | 支付完成 | 2012-06-21 | 4921-12-31 |
2012-06-20 | 002 | 创建订单 | 2012-06-20 | 4921-12-31 |
2012-06-20 | 003 | 支付完成 | 2012-06-20 | 4921-12-31 |
2012-06-21 | 004 | 创建订单 | 2012-06-21 | 4921-12-31 |
2012-06-21 | 005 | 创建订单 | 2012-06-21 | 4921-12-31 |
少了001创建订单这条数据,所以不取等号,我们取到的数据为这条数据到指定日期当前状态最新的数据。
最新文章
6.如何利用SEO赚取美金
众所周知,SEO(Search Engine Optimization)搜索引擎优化,是一种获取流量的方式,利用搜索引擎规则提高网站在相关搜索内的自
欧陆国际:外贸SEO应该怎么做
外贸SEO应该怎么做?外贸行业有两种线上模式:自己搭建网站、借助于B2B平台开网店,自建网站不受平台限制,推广方式也比较自由,
各个网站及搜索引擎收录地址大全
搜索引擎网站收录地址大全 【点此提交您的搜索引擎】360搜索引擎登录入口:http://info.so.360.cn/site_submit.html即刻
国内自动驾驶汽车排名
国产自动驾驶汽车有哪几款?国内自动驾驶汽车排名随着大家对于自动驾驶需求的日益增加,随着自动驾驶技术的进步,慢慢的诞生了越