ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

hive生成日期维度表Hql

2022-01-08 11:02:18  阅读:258  来源: 互联网

标签:01 format hive date 日期 Hql 2022 维度 select


hive生成日期维度表

利用现有的函数,生成维度表

表结构

日期key
具体日期
第几月份
第几季度
年份
周几
当前周的第几天
当前月的第几天
当前年的第几天
当前年的第几周
当前周的第一天
当前周的最后一天

分析

上述的表字段都是基于某个具体日期上计算的,所有首先要生成一个日期表,然后再计算每一天的具体属性

范围根据自己的需求,比如我这里定义的日期范围是2022-01-01~2022-12-31

# 1.使用date_add()以及posexplode()生成目标日期范围数据
select date_add("2022-01-01", a.pos) as range_date
from (
   select posexplode(split(repeat("@", datediff("2022-12-31", "2022-01-01")), "@"))
     ) a
#2.计算每一天的属性
with date_range as (
    select date_add("2022-01-01", a.pos) as d
from (
   select posexplode(split(repeat("@", datediff("2022-12-31", "2022-01-01")), "@"))
     ) a
)
select
    date_format(d, 'yyyyMMdd') as date_key
     ,d as `date`
     ,date_format(d,'yyyMM') as month
     ,month(d) as month_short
     ,quarter(d) as quarter
     ,year(d) as year
     ,date_format(d,'EEEE') as zhouji
     ,date_format(d, 'u') as daynumber_of_week
     ,day(d) as daynumer_of_month
     ,date_format(d, 'D') as daynumber_of_year
     ,weekofyear(d) as year_weeks
     ,date_add(d,1 - case when dayofweek(d) = 1 then 7 else dayofweek(d) - 1 end) as week_first_day
     ,date_add(d,7 - case when dayofweek(d) = 1 then 7 else dayofweek(d) - 1 end) as week_last_day
from date_range;

补充几个一个关于date_format的用法

-- 当前日期是周几
select date_format(`current_date`(),'EEE'); 

-- 当前日期是本周第几天
select date_format(`current_date`(),'u');

-- 当前日期是当前年的第几天
select date_format(`current_date`(),'D');
-- 当前日期是当前月份的第几天
select day(`current_date`())

标签:01,format,hive,date,日期,Hql,2022,维度,select
来源: https://blog.csdn.net/weixin_44178366/article/details/122377254

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有