最近终于有点时间了,东拼西凑的设计了一个日期维表,也是数仓设计时比较常用的。表结构如下:
dt string COMMENT '日历日期',
lunar_dt string COMMENT '农历日期',
calendar_year int COMMENT '日历年',
quarter_of_year int COMMENT '季度',
month_of_year int COMMENT '月份',
week_of_year int COMMENT '一年第几周',
dt_of_week int COMMENT '一周第几天',
dt_of_month int COMMENT '一个月第几天',
dt_of_year int COMMENT '一年第几天',
is_last_day_of_month boolean COMMENT '是否一个月最后一天',
is_weekend boolean COMMENT '是否周末日',
is_holiday boolean COMMENT '是否节假日',
holiday_cnt tinyint COMMENT '节日天数',
holiday_type tinyint COMMENT '日历天类型:1:工作日;2:周末(和假期连着按假期,因节假日调休上班按工作日算:3:元旦 4:春节 5:清明节 6:劳动节:7:端午节 8:中秋节 9:国庆'
实际落表代码没有写,只写了数据获取部分,具体实现代码如下,欢迎大佬指点~
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import requests
import json
import datetime
import time
import calendar
import lunardate
import csv
reload(sys) # reload 才能调用 setdefaultencoding 方法
sys.setdefaultencoding('utf-8')
holiday_dict = {}
# 判断二月闰月
def isLeapYear(year):
return calendar.monthrange(year, 2)[1] == 29

本文介绍了如何设计一个数据仓库中的日期维表,包括日历日期、农历日期、年份、季度、月份等详细信息,以及是否为周末、节假日等属性。还提到了节假日类型和工作日分类,并分享了数据获取部分的代码,但未包含实际落表的实现。
最低0.47元/天 解锁文章
3092

被折叠的 条评论
为什么被折叠?



