PowerBI技巧之利用DAX的CALCULATE和COUNTROWS比较两列值是否相同

更新时间:2023-04-15 21:48:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

在利用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

。使用公式如下:

这个公式当中调用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

函数做一个简单的判断处理。

当然,如果觉得用If嵌套麻烦也可以改成用Switch重写一下。

此外,如果要比较的两列可以形成1对多的关联关系,还可以利用之前blog介绍的Relationship函数来判断两列的相同值有哪些。

本文来源:https://www.bwwdw.com/article/om0q.html

Top