hive 中的拉链表 1
发表于:2025-01-29 作者:千家信息网编辑
千家信息网最后更新 2025年01月29日,hive中拉链表在有些情况下,为了保持历史的一些状态,需要用拉链表来做,这样做目的在可以保留所有状态的情况下可以节省空间。拉链表适用于以下几种情况吧数据量有点大,表中某些字段有变化,但是呢变化的频率也
千家信息网最后更新 2025年01月29日hive 中的拉链表 1
hive中拉链表
在有些情况下,为了保持历史的一些状态,需要用拉链表来做,这样做目的在可以保留所有状态的情况下可以节省空间。
拉链表适用于以下几种情况吧
数据量有点大,表中某些字段有变化,但是呢变化的频率也不是很高,业务需求呢又需要统计这种变化状态,每天全量一份呢,有点不太现实,
不仅浪费了存储空间,有时可能业务统计也有点麻烦,这时,拉链表的作用就提现出来了,既节省空间,又满足了需求。
一般在数仓中通过增加begin_date,en_date来表示,如下例,后两列是start_date和end_date.
12345678910 | 1 2016-08-20 2016-08-20 创建 2016-08-20 2016-08-20 1 2016-08-20 2016-08-21 支付 2016-08-21 2016-08-21 1 2016-08-20 2016-08-22 完成 2016-08-22 9999-12-31 2 2016-08-20 2016-08-20 创建 2016-08-20 2016-08-20 2 2016-08-20 2016-08-21 完成 2016-08-21 9999-12-31 3 2016-08-20 2016-08-20 创建 2016-08-20 2016-08-21 3 2016-08-20 2016-08-22 支付 2016-08-22 9999-12-31 4 2016-08-21 2016-08-21 创建 2016-08-21 2016-08-21 4 2016-08-21 2016-08-22 支付 2016-08-22 9999-12-31 5 2016-08-22 2016-08-22 创建 2016-08-22 9999-12-31 |
begin_date表示该条记录的生命周期开始时间,end_date表示该条记录的生命周期结束时间;
end_date = '9999-12-31'表示该条记录目前处于有效状态;
如果查询当前所有有效的记录,则select * from order_his where dw_end_date = '9999-12-31′
如果查询2016-08-21的历史快照,则select * from order_his where begin_date <= '2016-08-21′ and end_date >= '2016-08-21'
再简单介绍一下拉链表的更新:
假设以天为维度,以每天的最后一个状态为当天的最终状态。
以一张订单表为例,如下是原始数据,每天的订单状态明细
12345678910 | 1 2016-08-20 2016-08-20 创建 2 2016-08-20 2016-08-20 创建 3 2016-08-20 2016-08-20 创建 1 2016-08-20 2016-08-21 支付 2 2016-08-20 2016-08-21 完成 4 2016-08-21 2016-08-21 创建 1 2016-08-20 2016-08-22 完成 3 2016-08-20 2016-08-22 支付 4 2016-08-21 2016-08-22 支付 5 2016-08-22 2016-08-22 创建 |
根据拉链表我们希望得到的是
12345678910 | 1 2016-08-20 2016-08-20 创建 2016-08-20 2016-08-20 1 2016-08-20 2016-08-21 支付 2016-08-21 2016-08-21 1 2016-08-20 2016-08-22 完成 2016-08-22 9999-12-31 2 2016-08-20 2016-08-20 创建 2016-08-20 2016-08-20 2 2016-08-20 2016-08-21 完成 2016-08-21 9999-12-31 3 2016-08-20 2016-08-20 创建 2016-08-20 2016-08-21 3 2016-08-20 2016-08-22 支付 2016-08-22 9999-12-31 4 2016-08-21 2016-08-21 创建 2016-08-21 2016-08-21 4 2016-08-21 2016-08-22 支付 2016-08-22 9999-12-31 5 2016-08-22 2016-08-22 创建 2016-08-22 9999-12-31 |
可以看出 1,2,3,4每个订单的状态都有,并且也能统计到当前的有效状态。
状态
支付
拉链
有效
情况
空间
订单
变化
统计
业务
历史
周期
数据
时间
生命
需求
查询
原始
明细
作用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
为什么要用数据库原理
宁波hpe塔式服务器
青海任务态势系统软件开发
中国网络技术发达吗
力控如何把报警存入数据库
金蛙服务器
制造企业软件开发团队
晓花上海互联网科技
怎么找软件开发者
数据库应用技术考试题库
岳阳网络安全培训机构要怎么学
苏州比较有名的网络安全公司
正规软件开发预算
同花顺使用数据库类型
数据库管理是操作系统的功能吗
java应用服务器开发
android软件开发比赛
重庆直销软件开发公司
vr软件开发工作是
吉利软件开发面试题
湖北工程学院网络安全专业
我的世界缺管理的服务器
pc端软件开发方法
数据库系统视图题
大兴区定制软件开发操作
bms软件开发教学
运营商网络安全形势
济南app软件开发教程
阿里云ecs有数据库么
服务器可以做堆叠么