153_日期表兼容农历之自定义函数 fxCalendar

153-模型-日期表兼容农历之自定义函数 fxCalendar

一、背景

我们在做 Power BI 或者 Power Pivot 项目时候,几乎每个模型都会遇到的一个维度表,这个维度表就是日期表(Calendar),日期表对 DAX 建模有举足轻重的作用。

在各种复杂的业务场景中,对于时间来或者日期来说,大家都是平等的,其实对业务的划分也就大致相同。常规的年、季度、月、周、日等。在中国还有一个很重的特征就是农历的日期,在一些业务场景下,农历的日期也是单独做分析的;这个时候,我们常规的日期表就捉襟见肘了。

今天我们就发布一个兼容农历日期的 Power Query 自定义函数:fxCalendar ,先来看一下自定义函数。

附件下载:https://jiaopengzi.com/2635.html

image-20220524153010584

二、日期表解析

日期表字段说明

字段名称结果说明
C01_Dates2022/1/1日期
C02_Day1日期天
C03_WeekDay5周几数字,周一为:0,周日为:6
C04_WeekCNS1周几中文简写1字
C05_WeekCNS3星期六周几中文简写3字
C06_WeekENS1S周几英文简写1字
C07_WeekENS3Sat周几英文简写3字
C08_WeekENSaturday周几英文
C09_WeekIndex6366周索引:1900-1-1,星期一,第1周
C10_WeekNumber1周一开始的一年中第几周
C11_WeekW01周的W简写
C12_YearWeekY22W01年周组合
C13_Month1月份数字
C14_MonthMM01月份M简写
C15_MonthCN一月月份中文
C16_MonthENS3Jan月份英文简写3字
C17_MonthENJanuary月份英文
C18_YearMonthMY22M01年月M简写
C19_YearMonthUSJan-22年月英文简写
C20_YearMonth202201年月数字组合
C21_Quarter1季度数字
C22_QuarterQQ1季度Q简写
C23_YearQuarterQY22Q1年季度Q简写
C24_YearQuarter202201年季度数字组合
C25_HalfOfYearCN上半年中文半年度
C26_HalfOfYearENH1半年度H简写
C27_YearHalfY22H1年度季度简写组合
C28_Year2022年度数字
C29_FY00FY22年度FY简写
C30_FYFYFY:全年的意思,与月度等同维度辅助字段
C31_StartOfWeek2021/12/27C01_Dates对应周开始的日期
C32_StartOfMonth2022/1/1C01_Dates对应月开始的日期
C33_StartOfQuarter2022/1/1C01_Dates对应季度开始的日期
C34_StartOfHalfYear2022/1/1C01_Dates对应半年度开始的日期
C35_StartOfYear2022/1/1C01_Dates对应年度开始的日期
C36_EndOfWeek2022/1/2C01_Dates对应周结束的日期
C37_EndOfMonth2022/1/31C01_Dates对应月结束的日期
C38_EndOfQuarter2022/3/31C01_Dates对应季度结束的日期
C38_EndOfHalfYear2022/6/30C01_Dates对应半年度结束的日期
C40_EndOfYear2022/12/31C01_Dates对应年度结束的日期
C41_Holiday元旦节假期名称
C42_Animal年份属相
C43_LunarDateCN廿九C01_Dates对应的中文农历日期
C44_LunarMonthCN十一C01_Dates对应的中文农历月份
C45_LunarDate29C01_Dates对应的农历日期数字
C46_LunarMonth11C01_Dates对应的农历月份数字
C47_LunarYear2021C01_Dates对应的农历年数字
C48_Status假期日期状态包含:假期、周末、补班、工作日。

日期表实际效果图示

image-20220524155740853

image-20220524155950811

image-20220524160132929

image-20220524160319761

image-20220524160537682

三、日期表自定义函数解析

1、常规日期表参考之前的文章:https://jiaopengzi.com/566.html 。

2、本次日期表主要加入了农历的元素,农历的知识博大精深,我们在这里只是把常规日历与农历日期对应起来。

3、农历和常规日历的对应非常复杂,我们通过 Power Query 在百度的日历 API 接口获取的农历相关信息,再与常规日历拼接起来的。

image-20220524162029576

4、Power Query 中自定义函数的 M 代码。

M 代码查看地址:https://jiaopengzi.com/2635.html

5、复制上述 M 语句,打开 Power Query 新建空白查询,在高级编辑器中粘贴上述 M 语句,最后把查询的名称更改为 fxCalendar 即可。

四、总结

1、日期表在 DAX 建模中很重要。

2、一张好日期表可以在后续的 DAX 度量值设计以及可视化视觉的应用中起到很大的作用,比如这里的FY,还有年、半年度、季度、月度、周的开始日期以及结束日期等。

3、本次文章的重点是更新了常规日期表如何去和农历结合,这个对特定的业务场景非常有用。

4、同时我们后续还会依赖这个日期表做一系列的关于日期时间维度的内容。

by 焦棚子

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值