PowerBI之DAX神功番外篇27. 你还真别瞧不起“套路”
网友提问:

案例表:


先做一个度量值
接下来网友使用这样一个度量值:
这是《DAX神功》番外篇第3回讲的知识
网友知道总计可以为空,但是他想让总计变成:7+10+5 = 22
放到矩阵上发现:

说一些名词,什么筛选、构造数据集,这些都没有意义。
网友提供的度量值1,是矩阵行标题筛选后才计算的

例如我们在新建列中筛选“张三”就可以

但是,你现在是{“张三”,“李四”,“王五”} 它不是一个值
Selectedvalue有唯一值时返回该值,否则返回空

当你的矩阵行标题筛选时,Selectedvalue就会返回唯一值,并传递这个值进行计算。
但是总计,那里并不是唯一值,我们让总计为空的方法是不是说某列是唯一值,返回该值,否则返回空?

由于总计不是唯一值,SEARCH这时返回空,总计返回的是[总金额]这个度量值。

运算顺序:

首先要说这样做没错,每个人需求不同,有些人就不需要总计,
友情提示:SEARCH还是FIND区别《火力全开》讲过了

你想判断当姓名是唯一值时返回哪个度量值、不是唯一值时返回哪个度量值,也可以。但是我觉得这样很累,你要写两个度量值?我的“套路”可能性能没你好,但你不能永远都停留在2010年的配置呀。
比如某海就评价过“套路”

像这个网友是一点不懂,人家叫你声“老师”,你给人家讲讲
你不讲人家的代码哪错了,怎么改,我来讲。
SummarizeColumns不支持大多数的度量值,《火力全开》和《DAX神功》都讲了

这个网友需求是通过SummarizeColumns做笛卡儿积,你告诉他可以使用CROSSJOIN函数实现就好。《火力全开》笔记23.04中也讲过,《DAX神功》中讲了详细的原理

selectcolumns是从表中选择列(就算只选了一列,也是一张表)。度量值不能返回一张表。除非是一个只有一个标量值的表。《DAX神功》第1卷第10回讲的

人家要取名称,最终加上一个minx或maxx就可以了。你用find或search直接筛选度量值最后还要考虑总计。这个很好懂的,我全国幼儿园毕业也看懂了,只是那位网友还不熟悉DAX函数而已。接下来我就讲讲用“套路”做今天这个需求
在新建表中先按顺序测试:
第1步:笛卡尔积

第2步:添加列,找到的就返回位置
《火力全开》笔记20.04讲的新建列

第3步:先筛选判断列不为空的,再将来源列取出来

新建表的测试就到这里,我们可以写度量值了
这些学完《火力全开》就能做出来,你说哪个我没有讲?

将度量值2放到矩阵上

这样的操作,连四年级小朋友都听懂了,有什么不好吗?不要轻易的证明谁是错的,只需要把你认为正确的发出来,让观众去使用就可以了。
本文章配套课件已发评论区置顶,可下载测试

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可视化图表