1.21 PowerBI数据准备-日期表按事实表最新日期增加当前年/月等相关列

加入 PowerBI自己学 知识星球:下载源文件,边学边练;遇到问题,提问交流,有问必答。
日期表按照当前日期动态标记了当前年、当前财年、当前季、当前月、当前周、当前天,但是实际工作中,有可能交易数据并不是随着时间及时更新到当前的年/月/日,而是有一定的滞后性,比如从外部购买的市场数据、人工按月提报的数据等都会比当前月迟到1个月或几个月。报告展示这类数据的时候,如果使用按照当前日期标记和筛选当前年/月/日,就会返回空白。那么如何让报告页面展示到交易数据的最新月份呢?
解决方案
本质上还是在日期表中新增定位列,只是这次和日期表的年/月/日对比的不是当前的年/月/日了,而是交易数据中的最大日期,把对应最大交易日期的年/月标记为当前年和当前月,并定位为0以及基于此生成年和年月的定位序号。
举例
报告要展示最新销售日期的近6个月的数据,假设现在是2023年1月,最新销售数据更新到了2022年11月,因此报告应该展示2022年6月到11月的数据。
操作步骤
STEP 1 PowerQuery获取数据后,在销售表上点击鼠标右键选择引用,生成一个新的销售表。

STEP 2 在新的销售表中,选中日期列,点击菜单栏转换下的日期,选择最新,并命名为MaxDateofFact_Sales,生成了一个随事实表变化的动态最新日期参数。

STEP 3 在日期表中添加自定义列,输入代码,生成当前年和当前月的标记列以及年和年月的定位序号列。
Year_CY_Mark_按最新销售:
if [Year]=
Date.Year(MaxDateofFact_Sales)
then "当年"
else [Year]
YearMonth_CM_Mark_按最新销售:
if [YearMonth]= Date.Year(MaxDateofFact_Sales)*100+Date.Month(MaxDateofFact_Sales)
then "当月"
else [YearMonth]
Year_Offset_按最新销售:
[Year]-Date.Year(MaxDateofFact_Sales)
MonthOrder(辅助列,用于生成YearMont_Offset):
[Month]+12*([Year]-List.Min(Source
[Year]))
YearMonth_Offset_按最新销售:
[MonthOrder] -
(Date.Month(MaxDateofFact_Sales)+12*(Date.Year(MaxDateofFact_Sales)-List.Min(Source
[Year])))
生成的标记列,如下:

把YearMonth_Offset_按最新销售字段放入视觉对象筛选器,使用高级筛选,选择大于等于-5且小于等于0,报告就会动态显示基于最新销售日期的近6个月的数据了。

共有 0 条评论