一个sql生成hive日期维度表
目录
1、日期维度表
2、生成语句
3、用例
在进行日期处理时,有时候会很麻烦,于是小编开发了一张日期维表,供大家参考。
1、日期维度表
num | 字段名 | 字段中文名 | 描述 | 数据类型 |
1 | date | 日期 | 日期 yyyMMdd格式 | bigint |
2 | week | 星期,数字型 | 星期,数字型 0-6 | bigint |
3 | week_cn | 星期中文名 | 星期中文名 星期一…… | string |
4 | year_weeks | 一年中的第几周 | 一年中的第几周 1 2 3…… | bigint |
5 | mon_dt | 本周周一日期 | 本周周一日期 | bigint |
6 | sun_dt | 本周周日日期 | 本周周日日期 | bigint |
7 | month | 年月 | 年月,yyyyMM格式 | bigint |
8 | month_short | 月份简写 | 月份简写,MM格式1~12 | bigint |
9 | month_cn | 月份中文名 | 月份中文名 一月…… | string |
10 | quarter | 季度 | 季度,yyyyQ1\2\3\4 | string |
11 | quarter_short | 季度 数字型 | 季度 数字型 1-4 | bigint |
2、生成语句
set hive.execution.engine=tez;
with dates as (
select date_add("2010-01-01", a.pos) as d
from (select posexplode(split(repeat("o", datediff("2030-12-31", "2010-01-01")), "o"))) a
)
insert overwrite table dim.dim_date
select
d
, date_format(d, 'yyyyMMdd000000') as to_pt -- 指定分区格式
, date_format(d, 'yyyyMMdd') as date_yyyymmdd
, trunc(d,'MM') as month_first_day
, last_day(d) as month_last_day
, date_format(last_day(d),'yyyyMMdd000000') as month_last_pt
, date_format(d, 'yyyyMM') as month_yyyymm
, date_format(d, 'yyyy-MM') as month_yyyy_mm
, month(d) as month
, date_format(d, 'u') as week
, date_format(d, 'E') as week_long
, weekofyear(d) as week_of_year
, year(d) as year
, floor(substr(d,6,2)/3.1)*3+1 as quarter
-- , concat_group('"',date_format(d, 'yyyyMM'),'"') as date_yyyymmdd_list -- 低版本hive group_concat 不可用
from dates
3、用例
- 取月末:where date_pk = month_last_day;
- 取周末:where week_int in (6,7);
- 取每月最后一天pt+ 当月昨天pt:where pt IN ( SELECT max(to_pt) FROM dim.dim_date where to_pt <= '${-1d_pt}' group by month_yyyymm );
- 其它用法......
一个sql生成hive日期维度表相关推荐
- 教你用SQL生成一张带「农历」的日期维度表
点上方关注"SQL数据库开发", 设为"置顶或星标",第一时间送达干货 之前已经发布过使用存储过程,生存指定年份的日历表<SQL如何制作一张日历维度表&g ...
- hive生成日期维度表Hql
hive生成日期维度表 利用现有的函数,生成维度表 表结构 日期key 具体日期 第几月份 第几季度 年份 周几 当前周的第几天 当前月的第几天 当前年的第几天 当前年的第几周 当前周的第一天 当前周 ...
- python生成日期列表_PYTHON生成日期维度表
数据仓库的定义之一是反应历史变化,数据或多或少都会包含时间特征,因此日期维度就成了数据仓库中不可或缺的维度之一,可以说在任何一个事实表中都会有一个或者多个日期维度的外键.日期维度可以尽可能多的包含日期 ...
- MYSQL 生成日期维度表
这里写自定义目录标题 MYSQL 生成日期维度表 1.创建建维度表 2.生成维度数据函数 MYSQL 生成日期维度表 在报表统计中经常要用到日期维度进行汇总,所以需要提前生成通用的日期维度表. 1.创 ...
- 数据仓库之日期维度表构建
导读 大家好,今日立秋,立秋是阳气渐收.阴气渐长,由阳盛逐渐转变为阴盛的转折.我们上一篇文章 数据仓库之维度表 介绍了数据仓库中维度表,本篇文章在此基础上介绍和构建维度表中的日期维度.Kimball ...
- 编写一个SQL查询来报告 Person 表中每个人的姓、名、城市和州。如果 personId 的地址不在 Address 表中,则报告为空 null 【杭州多测师】【杭州多测师_王sir】...
编写一个SQL查询来报告 Person 表中每个人的姓.名.城市和州.如果 personId 的地址不在 Address 表中,则报告为空 null . 以 任意顺序 返回结果表. 示例 : Per ...
- 编写一个SQL查询,获取Employee表中第二高的薪水(Salary)
单选 class X{Y y=new Y();public X(){System.out.print("X");} } class Y{public Y(){System.out. ...
- hive日期维表 上周五到本周四为一周
需求: 在日期维表中添加一列,周,上周五到本周四代表一周 直接上sql: select aa.dates,substr(dates,0,4) as years,substr(dates,0,7) as ...
- 如何用SQL生成一张日期维度表?
点击关注公众号,SQL干货及时获取 后台回复:1024,获取海量学习资源 问题描述 输入想要生成日历的年份,通过调用存储过程,即可生成该年的全部日历. 创建表结构 我们根据常见的日历表来创建一个含有年 ...
最新文章
- 邻接表存储图的广度优先遍历
- 怎么用MYSQL分析财务数据_如何使用Mysql正确的处理财务数据
- 拉格朗日插值--等距节点Python实现并计算误差
- [ATF]-ATF makefile的导读
- 【若依(ruoyi)】菜单操作SQL
- Apk打包-签名过程
- 八款开源Android 游戏引擎介绍
- paip.python错误解决12
- 有没有测试颜色的软件,用什么软件测试显示器色彩最准:色彩校正软件
- win10ltsc安装后重启提示bitlocker有问题怎么办_原神安装运行问题-原神打不开进不去解决教程...
- 全球ip地址查询与区域判断
- 智科人之人工智能大实验四选一验优报告参考:基于遗传算法的函数极值求取
- 线序检测 多芯线 线缆检测 正反线序 交叉线序检测 排线检测 成品线检测
- 计算机课件白板培训,交互式电子白板的使用培训(1)(2)ppt课件
- 秦牧鸿蒙之体有什么用,第一五一二章 鸿蒙元气
- 一个毕业三年的程序猿对于提升自我的一些建议
- 疯狂springboot终极讲义笔记(二)
- 韩松EIE:Efficient Inference Engine on Compressed Deep Neural Network论文详解
- 罗升阳:那两年炼就的Android内功修养(转)
- su [user] 和 su - [user]的区别