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

PowerBI之DAX神功番外篇29. 解释火力全开24课为什么用Max

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

网友提问:

这个案例是在《PowerBI火力全开》24.005  这集讲的

https://www.bilibili.com/video/BV1qa4y1H7wp

有两张表:

销售表
查询表

要实现的功能,切片器筛选某个类型时,可以查找相应的电影

我们可以用Find函数也可以用SEARCH函数,区别是后者可以使用通配符,但是不区分大小写

第1步:我们先做切片器

第2步:你想想谁找谁?

是不是我在切片器上选谁?它选中的那个值就在销售表【类型】那列里找,看谁包含这个值?

如下图,我选的是传记,在销售表中【类型】那列找到所有包含传记的。

课上我们提供的代码:

关于变量a,可以用 Value(查询表[类型])  生成一张只有一列的表, 也可以直接用查询表,在本案例中没有区别,但是实际操作中,你的查询表可能有若列,直接使用查询表可能会影响性能,在《DAX神功》中已经做出了讲解。同样可以写成下面的这样。

度量值:

先做一个矩阵,把行标题放进去。行标题和列标题都是筛选的,这个在Excel中的数据透视表里面就明白了。

A筛选A对应的值,B筛选B对应的值

SELECTEDVALUE( '销售表'[类型] )   被ABCD...筛选返回各自的值

(因为电影不存在重复,就算翻拍也是两部电影,可是其它的案例可能涉及重复,如果名称重复,SELECTEDVALUE的意思是当只有一个值时返回该值,否则返回空)

因为火力全开是基础课程,我担心大家使用时,会遇到这个BUG,在这里我们使用MAX和MIN都可以。打个比方:

比如张三(男),前妻和现任,你应该先把表处理好,现在很多人自己的表有问题,他怪公式,如果这时我使用了SELECTEDVALUE,那当张三做行标题时,张三就会返回空,大家就会说公式错了。于是,我用MIN或MAX他会返回其中一个,结果错了,那是使用者表的问题。这俗称甩锅。我这个人怎么想就怎么说,你们不问,我可以不说,问了我一定实话实说。

所以说变量a是考虑性能,变量b之所以我选择MAX或MIN是因为有些人不了解自己的表,他不懂他自己在做什么,不先对数据进行清洗整理。我宁可让他结果不对,我也不能让他显示错误(人家有值没显示出来)。显示错误,他会说我不行。结果不会,我会说他不行。

后面的代码应该就没有难度了,用Filter(表, SEARCH条件) 进行筛选,用Countrows()>0 过滤掉空行,只显示找到的。

方法不只这一种,条条大路通罗马,比如这个问题,是不是也可以用我解答这位网友的方法做呢?可以用SELECTEDVALUE取切片器的选择值,然后找表。条条大路通罗马

https://www.bilibili.com/read/cv19439186

PowerBI学习顺序:

【1】Access基础篇,学习s01开头的集数,理解表格数据规范和表关系

https://www.bilibili.com/video/BV1tf4y117Sh

【2】PowerBI火力全开,学习函数语法,与应用场景

https://www.bilibili.com/video/BV1qa4y1H7wp

【3】DAX神功,学习DAX函数原理

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

【4】PowerBI可视化图表

https://www.bilibili.com/video/BV1W54y1i7dE

https://www.bilibili.com/video/BV1r54y1i75n


PowerBI之DAX神功番外篇29. 解释火力全开24课为什么用Max的评论 (共 条)

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