时间维度表脚本

时间维度表创建的脚本


根据不同的业务需求选择需要的字段即可!

在MySQL里面创建存储过程

--创建dim数据库,使用utf8编码
create database dim DEFAULT CHARACTER SET utf8;

--切换到dim数据库
use dim;


--创建dim_day表
create table dim_day(
DAY_ID varchar(100),
DAY_SHORT_DESC varchar(100),
DAY_LONG_DESC varchar(100),
WEEK_ID varchar(100),
WEEK_LONG_DESC varchar(100),
MONTH_ID varchar(100),
MONTH_SHORT_DESC varchar(100),
MONTH_LONG_DESC varchar(100),
QUARTER_ID varchar(100),
QUARTER_LONG_DESC varchar(100),
YEAR_ID varchar(100),
YEAR_LONG_DESC varchar(100)
)

--查看dim_day的结构
show full columns from dim_day;
$$  --写$$ 表示完结

+-------------------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| Field             | Type         | Collation       | Null | Key | Default | Extra | Privileges                      | Comment |
+-------------------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| DAY_ID            | varchar(100) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         |
| DAY_SHORT_DESC    | varchar(100) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         |
| DAY_LONG_DESC     | varchar(100) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         |
| WEEK_ID           | varchar(100) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         |
| WEEK_LONG_DESC    | varchar(100) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         |
| MONTH_ID          | varchar(100) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         |
| MONTH_SHORT_DESC  | varchar(100) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         |
| MONTH_LONG_DESC   | varchar(100) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         |
| QUARTER_ID        | varchar(100) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         |
| QUARTER_LONG_DESC | varchar(100) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         |
| YEAR_ID           | varchar(100) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         |
| YEAR_LONG_DESC    | varchar(100) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         |
+-------------------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+


--创建一个存储过程,实现时间维度的创建
DELIMITER $$  -- 存储过程的开始  也可以用 ||

create procedure dim_day(in start_date VARCHAR(20),in date_count int)
begin
declare i int;
set i=0;
DELETE from dim_day;
while i<date_count do
INSERT into dim_day
(DAY_ID,DAY_SHORT_DESC,DAY_LONG_DESC,WEEK_ID,WEEK_LONG_DESC,MONTH_ID,MONTH_SHORT_DESC,MONTH_LONG_DESC,QUARTER_ID,QUARTER_LONG_DESC,YEAR_ID,YEAR_LONG_DESC)
SELECT
REPLACE(start_date,'-','') DAY_ID,
DATE_FORMAT(STR_TO_DATE(start_date,'%Y-%m-%d %H:%i:%s'),'%Y-%m-%d') DAY_SHORT_DESC,
DATE_FORMAT(STR_TO_DATE(start_date,'%Y-%m-%d %H:%i:%s'),'%Y年%m月%d日') DAY_LONG_DESC,
DATE_FORMAT(STR_TO_DATE(start_date,'%Y-%m-%d %H:%i:%s'),'%Y%u') WEEK_ID,
DATE_FORMAT(STR_TO_DATE(start_date,'%Y-%m-%d %H:%i:%s'),'%Y年第%u周') WEEK_LONG_DESC,
DATE_FORMAT(STR_TO_DATE(start_date,'%Y-%m-%d %H:%i:%s'),'%Y%m') MONTH_ID,
DATE_FORMAT(STR_TO_DATE(start_date,'%Y-%m-%d %H:%i:%s'),'%Y-%m') MONTH_SHORT_DESC,
DATE_FORMAT(STR_TO_DATE(start_date,'%Y-%m-%d %H:%i:%s'),'%Y年第%m月') MONTH_LONG_DESC,
CONCAT(DATE_FORMAT(STR_TO_DATE(start_date,'%Y-%m-%d %H:%i:%s'),'%Y'),quarter(STR_TO_DATE( start_date,'%Y-%m-%d %H:%i:%s'))) QUARTER_ID,
CONCAT(DATE_FORMAT(STR_TO_DATE(start_date,'%Y-%m-%d %H:%i:%s'),'%Y'),'年第',quarter(STR_TO_DATE(start_date,'%Y-%m-%d %H:%i:%s')),'季度') QUARTER_LONG_DESC,
DATE_FORMAT(STR_TO_DATE(start_date,'%Y-%m-%d %H:%i:%s'),'%Y') YEAR_ID,
DATE_FORMAT(STR_TO_DATE(start_date,'%Y-%m-%d %H:%i:%s'),'%Y年') YEAR_LONG_DESC
from dual;
set i=i+1;
set start_date = DATE_FORMAT(date_add(STR_TO_DATE(start_date,'%Y-%m-%d %H:%i:%s'),interval 1 day),'%Y-%m-%d');
end while;
end
$$

--生成2019年的时间维度
call dim_day('2019-01-01',365)

--查询生成的一年的数据
select * from dim_day;
$$

+----------+----------------+-------------------+---------+-----------------+----------+------------------+-----------------+------------+-------------------+---------+----------------+
| DAY_ID   | DAY_SHORT_DESC | DAY_LONG_DESC     | WEEK_ID | WEEK_LONG_DESC  | MONTH_ID | MONTH_SHORT_DESC | MONTH_LONG_DESC | QUARTER_ID | QUARTER_LONG_DESC | YEAR_ID | YEAR_LONG_DESC |
+----------+----------------+-------------------+---------+-----------------+----------+------------------+-----------------+------------+-------------------+---------+----------------+
| 20190101 | 2019-01-01     | 20190101| 201901  | 2019年第01| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190102 | 2019-01-02     | 20190102| 201901  | 2019年第01| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190103 | 2019-01-03     | 20190103| 201901  | 2019年第01| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190104 | 2019-01-04     | 20190104| 201901  | 2019年第01| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190105 | 2019-01-05     | 20190105| 201901  | 2019年第01| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190106 | 2019-01-06     | 20190106| 201901  | 2019年第01| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190107 | 2019-01-07     | 20190107| 201902  | 2019年第02| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190108 | 2019-01-08     | 20190108| 201902  | 2019年第02| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190109 | 2019-01-09     | 20190109| 201902  | 2019年第02| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190110 | 2019-01-10     | 20190110| 201902  | 2019年第02| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190111 | 2019-01-11     | 20190111| 201902  | 2019年第02| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190112 | 2019-01-12     | 20190112| 201902  | 2019年第02| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190113 | 2019-01-13     | 20190113| 201902  | 2019年第02| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190114 | 2019-01-14     | 20190114| 201903  | 2019年第03| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190115 | 2019-01-15     | 20190115| 201903  | 2019年第03| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190116 | 2019-01-16     | 20190116| 201903  | 2019年第03| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190117 | 2019-01-17     | 20190117| 201903  | 2019年第03| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190118 | 2019-01-18     | 20190118| 201903  | 2019年第03| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190119 | 2019-01-19     | 20190119| 201903  | 2019年第03| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190120 | 2019-01-20     | 20190120| 201903  | 2019年第03| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190121 | 2019-01-21     | 20190121| 201904  | 2019年第04| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190122 | 2019-01-22     | 20190122| 201904  | 2019年第04| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190123 | 2019-01-23     | 20190123| 201904  | 2019年第04| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190124 | 2019-01-24     | 20190124| 201904  | 2019年第04| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190125 | 2019-01-25     | 20190125| 201904  | 2019年第04| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190126 | 2019-01-26     | 20190126| 201904  | 2019年第04| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190127 | 2019-01-27     | 20190127| 201904  | 2019年第04| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190128 | 2019-01-28     | 20190128| 201905  | 2019年第05| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190129 | 2019-01-29     | 20190129| 201905  | 2019年第05| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190130 | 2019-01-30     | 20190130| 201905  | 2019年第05| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190131 | 2019-01-31     | 20190131| 201905  | 2019年第05| 201901   | 2019-01          | 2019年第01| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190201 | 2019-02-01     | 20190201| 201905  | 2019年第05| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190202 | 2019-02-02     | 20190202| 201905  | 2019年第05| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190203 | 2019-02-03     | 20190203| 201905  | 2019年第05| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190204 | 2019-02-04     | 20190204| 201906  | 2019年第06| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190205 | 2019-02-05     | 20190205| 201906  | 2019年第06| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190206 | 2019-02-06     | 20190206| 201906  | 2019年第06| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190207 | 2019-02-07     | 20190207| 201906  | 2019年第06| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190208 | 2019-02-08     | 20190208| 201906  | 2019年第06| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190209 | 2019-02-09     | 20190209| 201906  | 2019年第06| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190210 | 2019-02-10     | 20190210| 201906  | 2019年第06| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190211 | 2019-02-11     | 20190211| 201907  | 2019年第07| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190212 | 2019-02-12     | 20190212| 201907  | 2019年第07| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190213 | 2019-02-13     | 20190213| 201907  | 2019年第07| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190214 | 2019-02-14     | 20190214| 201907  | 2019年第07| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190215 | 2019-02-15     | 20190215| 201907  | 2019年第07| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190216 | 2019-02-16     | 20190216| 201907  | 2019年第07| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190217 | 2019-02-17     | 20190217| 201907  | 2019年第07| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190218 | 2019-02-18     | 20190218| 201908  | 2019年第08| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190219 | 2019-02-19     | 20190219| 201908  | 2019年第08| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190220 | 2019-02-20     | 20190220| 201908  | 2019年第08| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190221 | 2019-02-21     | 20190221| 201908  | 2019年第08| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190222 | 2019-02-22     | 20190222| 201908  | 2019年第08| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190223 | 2019-02-23     | 20190223| 201908  | 2019年第08| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190224 | 2019-02-24     | 20190224| 201908  | 2019年第08| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190225 | 2019-02-25     | 20190225| 201909  | 2019年第09| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190226 | 2019-02-26     | 20190226| 201909  | 2019年第09| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190227 | 2019-02-27     | 20190227| 201909  | 2019年第09| 201902   | 2019-02          | 2019年第02| 20191      | 2019年第1季度     | 2019    | 2019|
| 20190228 | 2019-
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘金超DT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值