码迷,mamicode.com
首页 > 其他好文 > 详细

dwd_dim_user_info_his

时间:2021-02-25 12:11:02      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:mic   class   birt   ble   creat   from   add   loading   date   

用户维度表  

属于拉链表

应用场景:缓慢变化的表

特点:历史数据和最新数据在一张表中

图解:

技术图片

 

 

 

sql重点:建立临时表,union all , 如何找到并修改旧的end_date,临时表覆盖旧表

insert overwrite table dwd_dim_user_info_his_tmp 
select 
    * 
from 
(
    select 
        id, 
        name, 
        birthday, 
        gender, 
        email,
        user_level, 
        create_time, 
        operate_time, 
        2020-03-11 start_date, 
        9999-99-99 end_date 
    from ods_user_info 
    where dt=2020-03-11 
    
    -- 找出最新信息,并拼接修改后的旧信息
    union all 
    select 
        uh.id, 
        uh.name, 
        uh.birthday, 
        uh.gender, 
        uh.email, 
        uh.user_level, 
        uh.create_time, 
        uh.operate_time, 
        uh.start_date, 
        -- 与最新数据join ,找出要修改的旧信息,将其期限进行修改
        if(ui.id is not null and uh.end_date=9999-99-99, date_add(ui.dt,-1), uh.end_date) end_date 
    from dwd_dim_user_info_his uh 
    left join 
    ( 
        select 
            * 
        from ods_user_info 
        where dt=2020-03-11 
    ) ui 
    on uh.id=ui.id 
)his 
order by his.id, start_date;

 覆盖旧表:

insert overwrite table dwd_dim_user_info_his 
select * from dwd_dim_user_info_his_tmp;

 

dwd_dim_user_info_his

标签:mic   class   birt   ble   creat   from   add   loading   date   

原文地址:https://www.cnblogs.com/ldy233/p/14444260.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!