Power BI之DAX神功番外篇:第10回 数据干净大多可以避开时间智能日期函数
一、网友需求

因软件问题,我无法使用PowerPivot演示,请谅解!以下内容通过PowerBI演示。
二、思路解析
如果时间不连续,您需要系统的学习《PowerBI火力全开》+《DAX神功》思路与我接下来的方法是一样的,只是先找到你选中的月份,再找到同期月份,再锁定向后3个月。
当然,你也可以通过PowerQuery对空月补成null,甚至可以使用PowerQuery打上标记,使其月份为空销售时,自动跳过向后顺延。
今天我们来看看,如果先将数据清洗干净,那是一件多么简单的事情

【1】新建列
不要一提到新建列,就觉得它占用内存,增加容量。
《DAX神功》第4卷第9回 我们证明了:文件容量与列的基数影响最大,列的基数又与列的不重复值有关。
新建列为什么这么写:我在《PowerBI火力全开》中讲动态日期表那节课中详细说明过

【2】做一个切片器,将年月字段放进来

【3】我在切片器中选中的值如何体现?
这个函数,我们在《火力全开》和《DAX神功》中都有讲解,并且做了很多案例

【4】数据分析必须是我们自己会手工操作
这道题如果自己不会做,也就谈不上到PowerBI操作了。
(1)如果我们选中的是2022年3月,它同期是2021年3月,你需要2021年4月、5月、6月的销售。于是我们在新建表中测试
关于Convert函数转换数据类型详见《DAX神功》第1卷第4回

(2)既然得到这张表了,我们就可以将这张表的销售计算出来,销售是一个值,所以要写成度量值
这个公式的意思是对Filter生成的表求销售之和。
(3)将202103和202106写活
分析:
CONVERT(SELECTEDVALUE(Sheet1[年月]),INTEGER) = 202103
CONVERT(SELECTEDVALUE(Sheet1[年月]),INTEGER)+3 = 202106
(4)结果

三、总结
这就是降低难度的分析,前提是你要对数据进行清洗,你只需要知道,数值型可以进行比较,数值型不能与字符型进行比较,剩下的就是加减法问题了。如果你的月份不连续,PowerQuery搞定他。我给你个思路增加一个列,不就搞定了吗?

如果你不想这样做,坚持使用DAX时间智能日期函数,那我推荐大家正确的路线是:
Access合集S01开头的基础篇:理解数据类型与多表关系和处理
https://www.bilibili.com/video/BV1tf4y117Sh
PowerQuery基础篇全13集:你至少应该知道表头不在第一行怎么处理吧?
https://www.bilibili.com/video/BV1oa4y1j75e
PowerBI火力全开:学习基本语法
https://www.bilibili.com/video/BV1qa4y1H7wp
跟着孙兴华学习数据分析第四季、第五季:可视化图表
https://www.bilibili.com/video/BV1W54y1i7dE
https://www.bilibili.com/video/BV1r54y1i75n
DAX神功:理解DAX函数原理