hive_dim_date

本文档详细介绍了如何创建一个大数据仓库中的日期维度表`dim.dim_date`,包括各字段的含义及数据类型。同时,提供了每日更新此表的SQL插入语句,涉及日期计算、季度划分等复杂逻辑,确保数据的准确性和时效性。
摘要由CSDN通过智能技术生成

1 创建表

create table dim.dim_date(
    riqi string COMMENT'日期', 
    nian string COMMENT'年', 
    yue string COMMENT'月', 
    nian_yue string COMMENT'年-月', 
    nianyue string COMMENT'年月', 
    nianchu string COMMENT'年初',
    nianmo string COMMENT'年末', 
    tianshu int COMMENT'当前月一共的天数',
    jiduchu string COMMENT'季度初', 
    jidumo string COMMENT'季度末', 
    sjidchu string COMMENT'季度末', 
    sjidmo string COMMENT'季度末', 
    benjidu string COMMENT'季度末', 
    shangjidu string COMMENT'季度末', 
    yuechu string COMMENT'季度末', 
    yuemo string COMMENT'季度末', 
    shangyuemo string COMMENT'季度末', 
    benzhouchu string COMMENT'季度末', 
    benzhoumo string COMMENT'季度末', 
    shangnrq string COMMENT'季度末', 
    date_insert string COMMENT'数据入仓库时间'
)ROW FORMAT DELIMITED FIELDS TERMINATED BY '^' STORED AS TEXTFILE;

2-写入数据-每日执行

insert into dim.dim_date
    (riqi,nian,yue
    ,nian_yue
    ,nianyue
    ,nianchu
    ,nianmo
    ,tianshu
    ,jiduchu
    ,jidumo
    ,sjidchu
    ,sjidmo
    ,benjidu
    ,shangjidu
    ,yuechu
    ,yuemo
    ,shangyuemo
    ,benzhouchu
    ,benzhoumo
    ,shangnrq
    ,date_insert)
select ${dayid_today} as riqi,${yearid_today} as nian,substring(${dayid_today},6,2) as yue
    ,${monthid_today} as nian_yue
    ,regexp_replace(${monthid_today},'-','') as nianyue
    ,CONCAT(${yearid_today},'-01-01') as nianchu
    ,CONCAT(${yearid_today},'-12-31') as nianmo
    ,dayofmonth(last_day(${dayid_today})) as tianshu    
    ,add_months(concat(year(${dayid_today}),'-',substr(concat('0',floor((month(${dayid_today})+2)/3)*3+1),-2),'-01'),-3) as jiduchu
    ,date_sub(concat(year(${dayid_today}),'-',substr(concat('0',floor((month(${dayid_today})+2)/3)*3+1),-2),'-01'),1) as jidumo
    ,add_months(concat(year(${dayid_today}),'-',substr(concat('0',floor((month(${dayid_today})+2)/3)*3+1),-2),'-01'),-6) as sjidchu
    ,date_sub(add_months(concat(year(${dayid_today}),'-',substr(concat('0',floor((month(${dayid_today})+2)/3)*3+1),-2),'-01'),-3),1) as sjidmo
    ,concat(year(${dayid_today}),floor(substr(${dayid_today},6,2)/3.1)+1) as benjidu
    ,concat(year(add_months(${dayid_today},-3))
    ,floor(substr(add_months(${dayid_today},-3),6,2)/3.1)+1) as shangjidu
    ,date_sub(${dayid_today}
    ,dayofmonth(${dayid_today})-1) as yuechu
    ,last_day(${dayid_today}) as yuemo
    ,last_day(add_months(${dayid_today},-1)) as shangyuemo
    ,date_sub(next_day(${dayid_today},'MO'),7) as benzhouchu
    ,date_sub(next_day(${dayid_today},'MO'),1) as benzhoumo
    ,date_format(add_months(from_unixtime(unix_timestamp(), 'yyyy-MM-dd'),-12),'yyyy-MM-dd') as shangnrq
    ,date_format(current_timestamp,'yyyy-MM-dd HH:mm:ss')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值