乙個sql生成hive日期維度表

2021-10-13 07:06:34 字數 2026 閱讀 2932

目錄

1、日期維度表

2、生成語句

3、用例

num欄位名

字段中文名

描述資料型別

1date

日期日期 yyymmdd格式

bigint

2week

星期,數字型

星期,數字型 0-6

bigint

3week_cn

星期中文名

星期中文名 星期一……

string

4year_weeks

一年中的第幾周

一年中的第幾周 1 2 3……

bigint

5mon_dt

本週周一日期

本週周一日期

bigint

6sun_dt

本週週日日期

本週週日日期

bigint

7month

年月年月,yyyymm格式

bigint

8month_short

月份簡寫

月份簡寫,mm格式1~12

bigint

9month_cn

月份中文名

月份中文名 一月……

string

10quarter

季度季度,yyyyq1\2\3\4

string

11quarter_short

季度 數字型

季度 數字型 1-4

bigint

set hive.execution.engine=tez;

with dates as (

select date_add("2010-01-01", a.pos) as d

from (select po***plode(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

取月末: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 <= '$' group by month_yyyymm  );

其它用法......

乙個sql生成hive日期維度表

目錄 1 日期維度表 2 生成語句 3 用例 num欄位名 字段中文名 描述資料型別 1date 日期日期 yyymmdd格式 bigint 2week 星期,數字型 星期,數字型 0 6 bigint 3week cn 星期中文名 星期中文名 星期一 string 4year weeks 一年中的...

乙個分頁sql語句生成的function

分頁sql語句生成 function getpagesql tblname,fldname,pagesize,pageindex,ordertype,strwhere dim strtemp,strsql,strorder 根據排序方式生成相關 if ordertype asc then strte...

生成乙個金鑰

生成規則 md5 id id.time rand 1,1000 獲取id id session id mobile 18812344321 md5 md5 id id.time rand 1,1000 將md5加密字串轉換為陣列 md5 str split md5 取其中16位,從第8位開始取 md...