小勤:我要统计每栋楼的楼层情况和单元数,但楼层里有走廊的不能统计,这种情况怎么办?

PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据

大海:加个辅助列将楼层的情况做个判断,然后用辅助列的数据做透视?

小勤:最好不要辅助列,不然的话我每次接到表都得重新插列,然后再重新透视。

大海:既然这样的话,那用Power Pivot吧。直接在Power Pivot里实现这种特殊的计算。

小勤:啊?赶紧教教我吧。

大海:我们一步步来吧。

Step-1:将数据添加到数据模型(如果是要整合其他数据或直接拿同事发过来的数据用的话,可以通过Power Query获取数据然后添加到数据模型)

PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据_02

Step-2:在数据模型里直接写度量“非走廊“(名字可以随便起),公式为: 非走廊:=CALCULATE(COUNTA([楼层]),'表3'[楼层]<>"走廊")

PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据模型_03

Step-3:创建数据透视表

PP-DAX入门:传统数据透视无法实现的按条件计数问题_工作原理_04

PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据模型_05

PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据_06

结果如下:

PP-DAX入门:传统数据透视无法实现的按条件计数问题_工作原理_07

小勤:就要这样的效果!不过看那个公式好像很复杂啊。

大海:Power Pivot里的DAX函数其实比Power Query的M语言和函数还要好计一些,因为除了DAX里特有的函数外,大部分函数跟Excel里的都比较接近,比如其中的COUNTA和Excel里的COUNTA是完全一样的。

小勤:那个CALCULATE是什么意思?

大海:你看CALCULATE函数里写了2个参数,第一个就是 COUNTA,即对楼层进行计数,第二个参数是一个条件,整个公式的意思就是,基于第二个参数给定的条件用COUNTA函数计算楼层数。

PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据模型_08

小勤:啊,原来这样,经你这么一说,感觉好像也不难理解了。

大海:到目前你就先这么理解吧,实际上CALCULATE函数是DAX里最神奇的函数之一,要真正理解DAX函数及相关公式的工作原理还有一些基础理论知识需要学,也要慢慢练,后面我再拿案例跟你说。

小勤:好的。




PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据模型_09 PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据模型_09 PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据模型_09 PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据模型_09 PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据模型_09 PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据模型_09 PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据模型_09 PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据模型_09 PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据模型_09 PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据模型_09

PP-DAX入门:传统数据透视无法实现的按条件计数问题_数据模型_19