admin 管理员组文章数量: 1086019
2024年3月19日发(作者:sql课程用什么数据类型)
在利用
Power BI
进行数据整理时,某些情况下会需要比较来自不同表单中的两列值是否相同。例如在下例中需要
比较一下
Sales-1
和
Sales-2
两张表中的
Customer Number
是否有相同值。
要解决该问题可以利用
DAX
的
CALCULATE
和
COUNTROWS
函数进行。可以在
Sales-2
的表单中新建一个计算
列,比较一下
Sales-1
和
Sales-2
中的
Customer Number
值,如果
Sales-2
中的
Customer Number
在
Sales-1
中也存
在,就标记为
TRUE
,如果没有就标记为
FALSE
。使用公式如下:
Matched = CALCULATE(COUNTROWS('Sales-1'),FILTER('Sales-1','Sales-1'[Customer number]='Sales-2'[Customer number
这个公式当中调用
CALCULATE
函数的目的是需要对数据进行重新筛选,以便比较两个列当中是否有相同值。这
个筛选条件是在
FILTER
函数中进行定义的,过滤对象是
Sales-1
表单,过滤条件是
’Sales-1’[Customer
number]=’Sales-2’[Customer number]
。过滤之后的新
Sales-1
表单,会被带入到
COUNTROWS
中进行计算,看看
一共有多少行,之后再与
0
进行比较。大于
0
就表明两个表单有相同数据,小于等于
0
则没有。
在
Filter
函数中具体的执行过程是,基于计算列的特性,将当前表
Sales-2
中的
Customer number
一个一个拿出来去
Sales-1
表单中去跟
Customer number
列作比对,当有相同值时,当前行就会被取出用于构成新的表单,如果没有
匹配值,会返回空值
(blank)
。对于
Countrows
函数来说,当传入的数据是空值时,计算返回结果也是空值。而根
据
DAX
对空值的处理逻辑,此处会将空值按照数字
0
进行计算,因此通过简单的与
0
做比较即可判断两组数据是否
匹配。
按照这一思路,如果要比较当前
Sales-2
表中的
Sales ID
和
Customer number
两列数据与相对应的
Sales-1
表是否相
同,也比较简单。可以在
Filter
函数中调用
If
函数做一个简单的判断处理。
MatchedTwoColumn-1 = CALCULATE(COUNTROWS('Sales-1'),FILTER('Sales-1',IF('Sales-1'[Customer number]='Sales-2'
当然,如果觉得用
If
嵌套麻烦也可以改成用
Switch
重写一下。
MatchedTwoColumn-2 = CALCULATE(COUNTROWS('Sales-1'),FILTER('Sales-1',SWITCH('Sales-1'[Customer number]='Sales-2
此外,如果要比较的两列可以形成
1
对多的关联关系,还可以利用之前
blog
介绍的
Relationship
函数来判断两列的
相同值有哪些。
版权声明:本文标题:PowerBI技巧之利用DAX的CALCULATE和COUNTROWS比较两列值是否相同 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1710791739a573331.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论