历史拉链表

历史拉链表是一种数据模型,用于记录事物从开始到当前的所有状态变化,以节省存储空间并处理缓慢变化的数据。在数据库操作中,通过创建delta表、事实表以及两个tmp表来实现数据的插入和刷新。数据刷新过程涉及对历史和当前数据的分区,通过左外连接和数据交换来处理更新和删除操作。
摘要由CSDN通过智能技术生成

使用UDW创建历史拉链表。

介绍

  • 历史拉链表

    • 历史拉链表是一种数据模型,主要针对数据仓库设计中表存储数据的方式而定义的。**它记录一个事物从开始到当前状态的所有变化的信息。**拉链表可以避免按每一天存储所有记录造成的海量存储问题,同时也是处理缓慢变化数据的一种常见方式。
    • 也就是说,对于表中的任何数据,不进行真正的删除,只记录操作和有效日期。
  • 流程

    • 55253131334
    • 其中,tmp0表有两个分区,表示历史数据和当前数据,使用tmp1tmp0和事实表进行更新和交换。

操作

创建表

  • 首先需要创建delta表,事实表,以及两个tmp表

  • -- 事实表
    create table public.member_fatdt0
    (
        member_id varchar(64),         -- 会员ID
        phoneno varchar(20),           -- 电话号码
        dw_beg_date date,              -- 生效日期
        dw_end_date date,              -- 失效日期
        dtype char(1),                 -- 类型(历史数据,当前数据)
        dw_status char(1),             -- 数据操作类型(I,D,U)
        dw_ins_date date               -- 数据仓库插入日期
    )with(appendonly=true,compresslevel=5)   -- 压缩级别
    distributed by (member_id)
    PARTITION BY RANGE (dw_end_date)
    (
        PARTITION p20111201 START (date '2011-12-01') INCLUSIVE,
        PARTITION p20111202 START (date '2011-12-02') INCLUSIVE,
        PARTITION p20111203 START (date '2011-12-03') INCLUSIVE,
        PARTITION p20111204 START (date '2011-12-04') INCLUSIVE,
        PARTITION p20111205 START (date '2011-12-05') INCLUSIVE,
        PARTITION p20111206 START (date '2011-12-06') INCLUSIVE,
        PARTITION p20111207 START (date '2011-12-07') INCLUSIVE,
        PARTITION p20111231 START (date '2011-12-31') INCLUSIVE
        END (date 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值