这里写自定义目录标题

  • MYSQL 生成日期维度表
    • 1、创建建维度表
    • 2、生成维度数据函数

MYSQL 生成日期维度表

在报表统计中经常要用到日期维度进行汇总,所以需要提前生成通用的日期维度表。

1、创建建维度表

DROP TABLE IF EXISTS tb_rpt_dim_day;
CREATE TABLE tb_rpt_dim_day (
day_id bigint(0) NOT NULL COMMENT ‘主健’,
day_short date NOT NULL COMMENT ‘日期’,
year int(0) NOT NULL COMMENT ‘所属年份’,
week int(0) NOT NULL COMMENT ‘星期几’,
week_cn varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ‘星期几(中文)’,
week_en varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ‘星期几(英文)’,
month int(0) NOT NULL COMMENT ‘所属月份’,
month_cn varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ‘所属月份(中文)’,
month_en varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ‘所属月份(英文)’,
quarter int(0) NOT NULL COMMENT ‘所属季度’,
quarter_cn varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ‘所属季度(中文)’,
week_of_year int(0) NOT NULL COMMENT ‘本年第几周’,
day_of_month int(0) NOT NULL COMMENT ‘本月第几天’,
day_of_year int(0) NOT NULL COMMENT ‘本年第几天’,
PRIMARY KEY (day_id) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

2、生成维度数据函数

CREATE DEFINER=root@% PROCEDURE f_dim_day( IN start_date VARCHAR ( 20 ), IN date_count INT )
BEGIN
DECLARE
i INT;

SET i = 0;
DELETE
FROMtb_rpt_dim_day;
WHILEi < date_count DOINSERT INTO tb_rpt_dim_day SELECT REPLACE( start_date, '-', '' ) AS day_id,-- 日期主健DATE_FORMAT( STR_TO_DATE( start_date, '%Y-%m-%d %H:%i:%s' ), '%Y-%m-%d' ) AS day_short,DATE_FORMAT( STR_TO_DATE( start_date, '%Y-%m-%d %H:%i:%s' ), '%Y' ) AS `year`,DATE_FORMAT( STR_TO_DATE( start_date, '%Y-%m-%d %H:%i:%s' ), '%w' ) AS `week`,CASEDATE_FORMAT( STR_TO_DATE( start_date, '%Y-%m-%d %H:%i:%s' ), '%w' ) WHEN 1 THEN'星期一' WHEN 2 THEN'星期二' WHEN 3 THEN'星期三' WHEN 4 THEN'星期四' WHEN 5 THEN'星期五' WHEN 6 THEN'星期六' WHEN 0 THEN'星期天' END AS `week_cn`,DATE_FORMAT( STR_TO_DATE( start_date, '%Y-%m-%d %H:%i:%s' ), '%W' ) AS `week_en`,DATE_FORMAT( STR_TO_DATE( start_date, '%Y-%m-%d %H:%i:%s' ), '%c' ) AS `month`,CASEDATE_FORMAT( STR_TO_DATE( start_date, '%Y-%m-%d %H:%i:%s' ), '%c' ) WHEN 1 THEN'一月' WHEN 2 THEN'二月' WHEN 3 THEN'三月' WHEN 4 THEN'四月' WHEN 5 THEN'五月' WHEN 6 THEN'六月' WHEN 7 THEN'七月' WHEN 8 THEN'八月' WHEN 9 THEN'九月' WHEN 10 THEN'十月' WHEN 11 THEN'十一月' WHEN 12 THEN'十二月' END AS `month_cn`,DATE_FORMAT( STR_TO_DATE( start_date, '%Y-%m-%d %H:%i:%s' ), '%b' ) AS `month_en`,QUARTER ( STR_TO_DATE( start_date, '%Y-%m-%d %H:%i:%s' ) ) AS `quarter`,CASEQUARTER ( STR_TO_DATE( start_date, '%Y-%m-%d %H:%i:%s' ) ) WHEN 1 THEN'一季度' WHEN 2 THEN'二季度' WHEN 3 THEN'三季度' WHEN 4 THEN'四季度' END AS quarter_cn,DATE_FORMAT( STR_TO_DATE( start_date, '%Y-%m-%d %H:%i:%s' ), '%u' ) AS `week_of_year`,DATE_FORMAT( STR_TO_DATE( start_date, '%Y-%m-%d %H:%i:%s' ), '%e' ) AS `day_of_month`,DAYOFYEAR( STR_TO_DATE( start_date, '%Y-%m-%d %H:%i:%s' ) ) AS `day_of_year` FROMDUAL;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

调用函数如下:call f_dim_day(‘2021-01-01’,365)

MYSQL 生成日期维度表相关推荐

  1. python生成日期列表_PYTHON生成日期维度表

    数据仓库的定义之一是反应历史变化,数据或多或少都会包含时间特征,因此日期维度就成了数据仓库中不可或缺的维度之一,可以说在任何一个事实表中都会有一个或者多个日期维度的外键.日期维度可以尽可能多的包含日期 ...

  2. hive生成日期维度表Hql

    hive生成日期维度表 利用现有的函数,生成维度表 表结构 日期key 具体日期 第几月份 第几季度 年份 周几 当前周的第几天 当前月的第几天 当前年的第几天 当前年的第几周 当前周的第一天 当前周 ...

  3. 数据仓库之日期维度表构建

    导读 大家好,今日立秋,立秋是阳气渐收.阴气渐长,由阳盛逐渐转变为阴盛的转折.我们上一篇文章 数据仓库之维度表 介绍了数据仓库中维度表,本篇文章在此基础上介绍和构建维度表中的日期维度.Kimball ...

  4. mysql日期纬度表_mysql中生成时间维度表

    mysql中生成时间维度表 利用mysql常用日期函数生成时间维度表,效率最高,最简单,无需其他的一些工具支持.生成结果示例如下图: # time span SET @d0 = "2012- ...

  5. 教你用SQL生成一张带「农历」的日期维度表

    点上方关注"SQL数据库开发", 设为"置顶或星标",第一时间送达干货 之前已经发布过使用存储过程,生存指定年份的日历表<SQL如何制作一张日历维度表&g ...

  6. 一个sql生成hive日期维度表

    目录 1.日期维度表 2.生成语句 3.用例 在进行日期处理时,有时候会很麻烦,于是小编开发了一张日期维表,供大家参考. 1.日期维度表 num 字段名 字段中文名 描述 数据类型 1 date 日期 ...

  7. kettle时间维度_MySQL快速生成时间维度表

    MySQL快速生成时间维度表: MySQL里面生成一张时间维度表,用于ETL工具使用.

  8. Kettle生成日期维度数据(数仓项目)

    目录 生成日期维度数据 Hive创建日期维度表 使用Kettle构建以下组件结构图 组件配置 验证数据 报错,请看这 生成日期维度数据 经过需求分析我们发现指标统计需要的日期类型比较多如果在事实表的时 ...

  9. 2、用Kettle生成日期维度数据(一)使用kettle生成2019年日期文件保存到hive表中

    记录5月4号导入数据的过程,以后更方便使用这个方法 最终生成的ktr链接 链接:https://pan.baidu.com/s/1YJv7C7RIBawyzJD4j6DLMA 提取码:9de2 复制这 ...

最新文章

  1. AtCoder Beginner Contest 198 (A ~ F)题解
  2. 推荐一个非常实用的导航路径规划网站
  3. 客户端网页编程,第二章思维导图
  4. Java class不分32位和64位
  5. C语言 用链表对学号进行排序,求解C语言中建立一个对链表按照学号进行排序的问题...
  6. CPU 被挖矿,Redis 竟是内鬼!
  7. 多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
  8. IndexedDB封装
  9. Navicat安装与破解
  10. python化学公式配平_最简单易懂的化学方程式的配平方法
  11. 苏大计算机专业就业如何,苏州大学好就业吗?附苏州大学就业率最高的专业名单...
  12. 行业寒冬:java生成微信支付二维码
  13. [CTSC2016]时空旅行
  14. PHOTOSHOP CS打造素描MM
  15. 《中国人的紧箍咒》,你一定要支持的理由——
  16. 宜信实习经历: “明年暑假,我还要再来”
  17. 客户流失及用户画像分析
  18. 联想微型计算机安装系统,联想笔记本做系统,手把手教你联想笔记本安装win10系统...
  19. Eplan:谈谈电气图纸设计结构1一基本知识
  20. lcd刷新率计算方法

热门文章

  1. 网页HTML5制作flex布局骰子,flex布局实现骰子
  2. 08-现代SoC,SecOps和SIEM:它们如何协同工作
  3. 组图:山村妇女生产过程
  4. 前后端分离项目集成PageOffice——实现在线编辑Word文件的版本控制
  5. 异步电机直接转矩控制与模型预测转矩控制性能对比
  6. 双目视觉 1 双目视觉的原理
  7. Codeup墓地-1129
  8. Android实战——ShareSDk的使用,实现一键分享微信好友、朋友圈、QQ
  9. day16 运动(上)
  10. httpd2.4.39下载安装