`

历史拉链表

阅读更多
http://www.dataguru.cn/portal.php?mod=view&aid=3272

在数据仓库的数据模型设计过程中,经常会遇到这样的需求:

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


拉链历史表,既能满足反应数据的历史状态,又可以最大程度的节省存储;

举个简单例子,比如有一张订单表,6月20号有3条记录:

到6月21日,表中有5条记录:

到6月22日,表中有6条记录:

数据仓库中对该表的保留方法:

1. 只保留一份全量,则数据和6月22日的记录一样,如果需要查看6月21日订单001的状态,则无法满足;
2. 每天都保留一份全量,则数据仓库中的该表共有14条记录,但好多记录都是重复保存,没有任务变化,如订单002,004,数据量大了,会造成很大的存储浪费;

如果在数据仓库中设计成历史拉链表保存该表,则会有下面这样一张表:
说明:

1. dw_begin_date表示该条记录的生命周期开始时间,dw_end_date表示该条记录的生命周期结束时间;
2. dw_end_date = '9999-12-31'表示该条记录目前处于有效状态;
3. 如果查询当前所有有效的记录,则select * from order_his where dw_end_date = '9999-12-31'
4. 如果查询2012-06-21的历史快照,则select * from order_his where dw_begin_date <= '2012-06-21' and end_date >= '2012-06-21',这条语句会查询到以下记录:
和源表在6月21日的记录完全一致:

可以看出,这样的历史拉链表,既能满足对历史数据的需求,又能很大程度的节省存储资源;

关于这种历史拉链表的etl刷新策略和方法,下次再谈吧。。。
分享到:
评论

相关推荐

    拉链表案例 - 完整.pdf

    原始表用于存储用户的原始信息,而拉链表用于存储用户信息的历史变化记录。 在创建拉链表时,我们需要定义拉链表的结构,包括用户 ID、用户名、用户编号、电话号码、生效日期和失效日期等字段。生效日期和失效日期...

    拉链表的使用.docx

    每天都有更新的用户状态,使用拉链表可以保留历史数据,并且使存储空间更加节约。 拉链表的设计需要考虑两个关键指标:START_DT和END_DT。START_DT代表开始日期,END_DT代表结束日期。通过这两个指标,可以记录数据...

    拉链表重复跑数据错误解决.docx

    在 Hive 中,拉链表是一种常见的数据结构,用于存储历史数据。但是,在拉链表中重复跑数据时,可能会出现数据错误的问题。本文将提供四种解决方案来解决拉链表重复跑数据错误问题。 方案一:问题:拉链表重复跑某一...

    数据仓库拉链表

    在数据分析中有时会需要维护一些历史状态,比如订单状态变化,评分变化,为了保存下来这些状态变化的路径,可以同过拉链表实现 -- 使用场景 1、数据量比计较大,但业务要求每次需要查询全量历史,每天存储一份全量...

    深入讲解拉链表,还怕面试官问?.docx

    拉链表是一种数据库表结构,主要用于存储数据的历史版本,以便在需要时能够快速恢复到某个特定时间点的状态。这种表设计模式在数据仓库和大数据领域中尤其常见,因为它们能有效地处理数据的变化和历史追踪。 一、...

    介绍数据表的拉链示例。

    - **数据完整性**:拉链表确保了数据的完整性,即使数据被更新或删除,其历史状态仍然可追溯。 - **高效查询**:通过时间戳可以直接查询到某个时间点的数据,无需遍历所有历史快照。 - **审计与合规**:对于需要...

    Datastage实现拉链算法.doc

    拉链表的概念是为了解决数据的历史版本记录以及减少存储开销,它记录了某个实体从开始到当前状态的所有变化。本文将探讨如何在Datastage中实现拉链算法。 首先,理解拉链表的结构至关重要。拉链表通常包含标识字段...

    作业答案(下)1

    在IT行业中,尤其是在大数据处理和分析的领域,拉链表(Zipper Table)是一种非常重要的数据结构,它用于存储数据的历史版本,以便于追踪和分析数据的变化。在本例中,我们将探讨如何使用拉链表来实现核心交易分析中...

    数仓建模——维度表详细讲解.docx

    拉链表则通过维护一个包含开始日期和结束日期字段的表来记录每个维度记录的有效期,从而在不牺牲太多存储空间的同时,能够有效地进行历史数据查询。 多值维度和多值属性是维度表设计时需要解决的两个常见问题。对于...

    自动生成拉链程序.rar_仓库 拉链 VBA

    7. **数据集成**:拉链程序可能涉及到从多个源(如不同表或时间段)整合数据,确保一致性并准备进行深度分析。 8. **接口设计**:Excel工作簿中的用户界面可能包含按钮和表单,用户通过这些元素触发VBA宏,直观地...

    大数据实战Demo系统-MaxCompute数据仓库数据转换实践.pdf

    基础数据层的表分为主表、历史表和追加表,数据保留策略依据不同表的特性,可以是全表覆盖、更新插入、直接加载或使用历史拉链方法。 应用层则基于基础数据层构建,包含针对特定分析任务的集市表,如客户分析、销售...

    big data yipin project note4

    拉链表是DWD层常用的一种技术,用于处理时间序列数据的历史版本。拉链表能够记录数据的变化历程,便于分析历史状态。在笔记中,我们分析了拉链表的实现流程,并进行了实际操作,帮助理解其在新零售场景下的应用。 ...

    数据仓库多维数据模型的设计.docx

    - **全量历史表算法**:利用拉链表记录数据的历史变化。 6. **拉链表**: - 拉链表用于记录数据随时间的变化,每个记录包含当前状态和历史状态,便于追踪数据演变。 在构建数据仓库时,选择合适的模型、设计合理...

    test_db.sql

    在数据仓库中,经常会用历史数据和时间维度做数据分析。而保存历史数据最常见的方案是使用拉链表进行存储。 创建测试表中的数据

    商业银行数据仓库浅析.docx

    - **拉链表应用**:有效记录数据的历史变更情况,支持时间序列分析。 - **索引优化**:合理设置索引,加快查询速度,提高系统性能。 #### 常见问题及解决方法 - **数据量过大**:采用分区分表、数据压缩等技术手段...

    商业银行数据仓库浅析.docx编程资料

    数据仓库通常采用多种策略来管理和存储历史数据,如拉链表、快照表等。 #### 六、常见问题 - **数据量**:随着数据量的增长,数据仓库的性能可能会受到影响,需要合理规划存储方案。 - **拉链表**:一种特殊的表...

    极限存储设计原理与实践.pptx

    例如,商品表和交易表。 - **增量数据**:这类数据通常没有业务主键,每天都有新的记录加入,每条记录几乎都是唯一的。例如,评价增量表和点击流日志。 #### 四、数据生命周期的概念 数据生命周期是指一条记录从...

Global site tag (gtag.js) - Google Analytics