欢迎光临散文网 会员登陆 & 注册

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

2022-03-24 11:05 作者:孙兴华zz  | 我要投稿

一、网友需求

因软件问题,我无法使用PowerPivot演示,请谅解!以下内容通过PowerBI演示。

二、思路解析

如果时间不连续,您需要系统的学习《PowerBI火力全开》+《DAX神功》思路与我接下来的方法是一样的,只是先找到你选中的月份,再找到同期月份,再锁定向后3个月。

当然,你也可以通过PowerQuery对空月补成null,甚至可以使用PowerQuery打上标记,使其月份为空销售时,自动跳过向后顺延。

今天我们来看看,如果先将数据清洗干净,那是一件多么简单的事情

表名:Sheet1

【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函数原理

https://www.bilibili.com/read/readlist/rl442274

Power BI之DAX神功番外篇:第10回 数据干净大多可以避开时间智能日期函数的评论 (共 条)

分享到微博请遵守国家法律