美文网首页
历史拉链表

历史拉链表

作者: zealscott | 来源:发表于2019-03-20 18:35 被阅读0次

使用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 '3001-01-01') EXCLUSIVE
    );
    
    -- 增量表
    create table public.member_delta
    (
        member_id varchar(64),
        phoneno varchar(20),
        action char(1),                      -- 数据操作类型(I,D,U)
        dw_ins_date date                     -- 类型(新增,删除,更新)
    )with(appendonly=true,compresslevel=5)   -- 压缩级别
    distributed by (member_id)
    
    -- 临时表
    create table public.member_tmp0
    (
        member_id varchar(64),
        phoneno varchar(20),
        dw_beg_date date,
        dw_end_date date,
        dtype char(1),
        dw_status char(1),
        dw_ins_date date
    )with(appendonly=true,compresslevel=5)   -- 压缩级别
    distributed by (member_id)
    PARTITION BY LIST (dtype)
    (
        PARTITION PHIS VALUES ('H'),      -- 表示历史信息
        PARTITION PCUR VALUES ('C'),      -- 表示当前信息
        DEFAULT PARTITION other
    );
    

-- 临时表1
create table public.member_tmp1
(
member_id varchar(64),
phoneno varchar(20),
dw_beg_date date,
dw_end_date date,
dtype char(1),
dw_status char(1),
dw_ins_date date
)with(appendonly=true,compresslevel=5) -- 压缩级别
distributed by (member_id)


- ![55252699017](http://wx4.sinaimg.cn/mw690/0060lm7Tly1g124gz9wi3j30fu0a20ta.jpg)

### 插入数据

- 插入delta表

- ```sql
  Insert into member_delta values('mem006','1310000006','I','2011-12-03');
  Insert into member_delta values('mem002','1310000002','D','2011-12-03');
  Insert into member_delta values('mem003','1310000003','U','2011-12-03');
  • 55252945525

相关文章

  • 历史拉链表

    使用UDW创建历史拉链表。 介绍 历史拉链表历史拉链表是一种数据模型,主要针对数据仓库设计中表存储数据的方式而定义...

  • Greenplum 数据库 之 拉链表 的实现

      历史拉链表是一种数据模型,主要是针对数据仓库设计中表存储数据的方式而定义的;顾名思义,所谓历史拉链表,就是记录...

  • 数据仓库(10)数仓拉链表开发实例

    拉链表是数据仓库中特别重要的一种方式,它可以保留数据历史变化的过程,这里分享一下拉链表具体的开发过程。 维护历史状...

  • 拉取历史版本

  • 数据仓库之拉链表详解

    定义: 拉链表 - 维护历史状态,以及最新状态数据的一种表,拉链表根据拉链粒度的不同,实际上相当于快照,只不过做了...

  • 数据仓库之拉链表

    拉链表 拉链表是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史。记录一个事物从开始,...

  • hive中拉链表

    在有些情况下,为了保持历史的一些状态,需要用拉链表来做,这样做目的在可以保留所有状态的情况下可以节省空间。 拉链表...

  • 链表基础

    链表基础 链表长度 链表为空 链表结构 链表增加

  • 双向链表&双向循环链表

    链表分为:单链表、单向循环链表、双向链表、双向循环链表本节主要说明:双向链表、双向循环链表 定义结点 一、双向链表...

  • 《未来简史》:从造物主到物

    尤瓦尔·赫拉利,以色列新锐历史学家,76年生人,牛津大学历史学博士,现任耶路撒冷希伯来大学历史系教授。 赫拉利是一...

网友评论

      本文标题:历史拉链表

      本文链接:https://www.haomeiwen.com/subject/xpitvqtx.html