按条件进行计数是个很常见的需求,Excel有个专门的函数COUNTIF来做这种计算,PowerBI有没有类似的函数呢?
PowerBI并没有与COUNTIF功能完全相同的函数,不过做这种计算也并不是难事,下面就以这个简单的数据为例:
来看看PowerBI对类别进行计数的几种方法。
PowerQuery法
添加自定义列:
List.Count(
Table.SelectRows(
源,(x)=>x[类别]=[类别]
)[类别]
)
如果要按月来统计类别的数量,只需要增加一个筛选的条件即可:
List.Count(
Table.SelectRows(
源,(x)=>x[类别]=[类别] and x[月份]=[月份]
)[类别]
)
利用DAX添加计算列法
在数据模型中利用DAX也是同样的思路,添加计算列:
类别计数 =
COUNTROWS(
FILTER(
'数据表',
'数据表'[类别]=EARLIER('数据表'[类别])
)
)
按月来统计类别的数量可以这样写:
类别计数 按月 =
COUNTROWS(
FILTER(
'数据表',
'数据表'[类别]=EARLIER('数据表'[类别])&&
'数据表'[月份]=EARLIER('数据表'[月份])
)
)
利用DAX建立度量值法
如果用度量值来计算类别的数量,应该怎么做呢?其实可以更简单:
类别计数 度量值 = COUNTROWS('数据表')
如果想看类别的计数,将类别作为上下文即可:
如果按月查看类别的计数,只需要上下文中加入月份:
如果是添加列的方式来计数,无论是PowerQuery自定义列还是DAX计算列,思路是一样的,只是用的函数不同而已。
而通过度量值来计数,要简单很多,关键是厘清楚分析和展现的逻辑,提供合适的上下文。
更多干货教程:PowerBI星球 采悟