故事背景
最近,我们收到了一些关于时间表更新的询问。询问的朋友发现,随着2025年的到来,2024年的日期表已不再适用。这是一个在数据分析领域常见的问题,每年都需要对日期表进行更新。
解决方案
鉴于创建和更新日期表是一项年度任务,我们建议采用以下高效方法:
-
避免在创建日期表上花费过多时间。
-
直接使用我们提供的DAX代码模板,快速生成包含必要时间字段的日期表。
DAX日期表模板:
日期表 =
ADDCOLUMNS (
CALENDAR ( DATE(2025, 1, 1), DATE(2025, 12, 31) ),
"年度", YEAR([Date]),
"季度", QUARTER([Date]),
"季度Q", "Q" & QUARTER([Date]),
"月份", MONTH([Date]),
"月份全称", FORMAT([Date], "MMMM"),
"月份简称", FORMAT([Date], "MMM"),
"日", DAY([Date]),
"周数", WEEKNUM([Date], 2),
"星期全称", FORMAT([Date], "dddd"),
"星期简称", FORMAT([Date], "ddd"),
"年季", YEAR([Date]) & "Q" & QUARTER([Date]),
"年月", YEAR([Date])*100 + MONTH([Date]),
"年月日", YEAR([Date])*10000 + MONTH([Date])*100 + DAY([Date])
)
样例数据如下:
如何新建表可以参考下面链接:
Power BI如何新建表
日期表拓展
如果日期模板表未能覆盖您的所有需求,您可以将日期模板表为日期基础表。然后,根据您的特定分析需求,您可以在这个日期表中巧妙地融入辅助列,比如节假日和财年等关键信息,这些都能显著提升模型的计算能力和灵活性。
考虑到节假日在全球各地有着不同的文化和传统背景,自动化的公式生成可能无法准确捕捉这些差异。因此,采用手工方式来标记这些特殊日期,手工方式不仅更加灵活,也更能保证准确性。这种方法使得您的模型能够更加贴近不同地区的实际情况,从而提供更加精准和有意义的分析结果。
下面为2025年国家法定假日表,
年 | 月 | 日 | 日期 | 节日名称 | 节日起始 | 节日结束 |
2025 | 1 | 1 | 20250101 | 元旦 | 1/1/2025 | 1/1/2025 |
2025 | 1 | 28 | 20250128 | 春节 | 1/28/2025 | 2/4/2025 |
2025 | 4 | 4 | 20250404 | 清明节 | 4/4/2025 | 4/6/2025 |
2025 | 5 | 1 | 20250501 | 劳动节 | 5/1/2025 | 5/5/2025 |
2025 | 5 | 31 | 20250531 | 端午节 | 5/31/2025 | 6/2/2025 |
2025 | 10 | 1 | 20251001 | 国庆节 | 10/1/2025 | 10/8/2025 |
2025 | 10 | 6 | 20251006 | 中秋节 | 10/1/2025 | 10/8/2025 |
大家可以把假日表内容以Power BI新建表或者以Excel文件形式导入Power BI数据模型中,然后与创建的时间模板表通过共有的日期字段建立1:1连接关系。
这样就可以把引入的假日信息用到相关的场景和计算当中。到了2026年时,同样可以复用上面的时间表模板预计,以及相关的思路。
时间表的知识点补充
1,为什么必须用日期表?
对于刚入门的数据分析学者,他们常常会问:为何在构建数据模型时需要使用日期表?难道我们不能直接利用交易数据中的日期信息吗?
答案是明确的:不可以。原因在于,交易数据中的日期记录往往是不完整的。
例如,某些特定日期可能没有交易活动发生,这意味着这些日期在交易数据中是缺失的。如果直接使用这些不完整的日期数据,将无法全面覆盖我们分析所需的时间范围。
2,日期表不要包含短期内用不到的年份
在构建日期表时,我们应避免包含那些短期内不会用到的年份。虽然技术上我们可以轻松生成一个包含百年日期的表,但这样做在实际计算中可能会引发性能瓶颈。
因此,建议的做法是,日期表的覆盖范围应该基于事实表中的实际日期,然后向前或向后适当扩展一到两年,以备不时之需。这样的设计既保证了模型的计算效率,又满足了未来可能的分析需求。
今天分享结束,请大家持续订阅和关注我,感谢大家的支持。