小勤:我要统计每栋楼的楼层情况和单元数,但楼层里有走廊的不能统计,这种情况怎么办?
大海:加个辅助列将楼层的情况做个判断,然后用辅助列的数据做透视?
小勤:最好不要辅助列,不然的话我每次接到表都得重新插列,然后再重新透视。
大海:既然这样的话,那用Power Pivot吧。直接在Power Pivot里实现这种特殊的计算。
小勤:啊?赶紧教教我吧。
大海:我们一步步来吧。
Step-1:将数据添加到数据模型(如果是要整合其他数据或直接拿同事发过来的数据用的话,可以通过Power Query获取数据然后添加到数据模型)
Step-2:在数据模型里直接写度量“非走廊“(名字可以随便起),公式为:
非走廊:=CALCULATE(COUNTA([楼层]),'表3'[楼层]<>"走廊")
Step-3:创建数据透视表
结果如下:
小勤:就要这样的效果!不过看那个公式好像很复杂啊。
大海:Power Pivot里的DAX函数其实比Power Query的M语言和函数还要好计一些,因为除了DAX里特有的函数外,大部分函数跟Excel里的都比较接近,比如其中的COUNTA和Excel里的COUNTA是完全一样的。
小勤:那个CALCULATE是什么意思?
大海:你看CALCULATE函数里写了2个参数,第一个就是 COUNTA,即对楼层进行计数,第二个参数是一个条件,整个公式的意思就是,基于第二个参数给定的条件用COUNTA函数计算楼层数。
小勤:啊,原来这样,经你这么一说,感觉好像也不难理解了。
大海:到目前你就先这么理解吧,实际上CALCULATE函数是DAX里最神奇的函数之一,要真正理解DAX函数及相关公式的工作原理还有一些基础理论知识需要学,也要慢慢练,后面我再拿案例跟你说。
小勤:好的。