发布:2024/9/25 20:52:52作者:管理员 来源:本站 浏览次数:148
PowerBI中使用的最多的聚合函数就是求和和计数,求和SUM和SUMX前面已经写了,这一篇主要介绍几个计数的函数。包括COUNT、COUNTX、COUNTA、COUNTAX、COUNTBLANK、COUNTROWS、DISTINCTCOUNT,看上去有点多,实际上用法都差不多,最常用的就是COUNTA、COUNTAX和DISTINCTCOUNT这三个函数,下面分别举例说明一下。
【COUNT和COUNTA】
在Excel中,COUNT和COUNTA两个函数的差异还是挺大的,COUNT只对数值类型进行计数,COUNTA则对所有非空字符进行计数。但是在PowerBI中,这两个实际使用效果基本一样,所有一般情况下随便选择其中一个函数使用就行。
COUNT
COUNT(<column>)
包含的类型有三类:数字、字符串和日期,这基本上就是表格中常用的数据格式了;
空白值跳过,不支持TRUE/FALSE值,如果包含TRUE/FALSE只能使用COUNTA计数;
下面计算销售数据的订单数,因为每一条数据算一个订单,没有订单号的字段,就使用产品id列就行计数,效果是一样的,DAX写法和结果如下↓
订单数COUNT = COUNT([产品id])
COUNTA
COUNTA(<column>)
如果需要计算包含逻辑值、特殊符号,就使用COUNTA。一般情况下作用和COUNTA一样,还是计算销售数据的订单数,使用COUNTA的DAX写法和结果如下,和上面的结果是一样的↓
订单数COUNTA = COUNTA([产品id])
【COUNTX和COUNTAX】
COUNTX(<table>,<expression>)
COUNTAX(<table>,<expression>)
这两个作用上面已经讲了,就只用COUNTAX进行解释说明了。和SUMX函数一样,有table和expression两个参数,table主要是通过FILTER和RELATED函数根据条件筛选出一张新的表格出来,expression表达式则对新表格里面的某一列进行计数,最后返回一个整数。
先筛选出销售表里面产品id=1即科罗娜的数据形成一张新的隐形逻辑表格,然后对这个表格里面的订单进行计数,结果就只有科罗娜的销售订单数,DAX语句和结果如下↓
订单数COUNTAX =
COUNTAX(
FILTER('模拟销售数据',
[产品id]="1"),
[产品id])
再来一个使用RELATED的函数,今年一月份,除了酒类的各产品销售订单数,DAX语句和结果如下↓
1月订单数 =
COUNTAX(
FILTER('模拟销售数据',
RELATED('日期表'[年月])="2021-01"&&RELATED('产品表'[品类])<>"酒类"),
'模拟销售数据'[产品id])
【COUNTBLANK】
COUNTBLANK(<column>)
用法和COUNT一样,只有一个列的参数。只对空白单元格计数,返回空白单元格的数量。因为之前的销售数据没有空值,所以简单的模拟了20行数据,其中有4行日期是空值的订单,就计算日期为空值的数量,DAX写法如下↓
空值数 = COUNTBLANK([日期])
【COUNTROWS】
COUNTROWS([<table>])
这个函数是基于计算基表中的行数,所有唯一的参数是一个表,也可以用于计算通过筛选表或者将上下文应用于表而得出的行数。
对销售数据表进行行计数,结果和之前COUNT函数时一样的,DAX写法和结果如下↓
COUNTROW行数 = COUNTROWS('模拟销售数据')
因为COUNTROW是对表格进行行计数的,所以传入的参数也可以是一个进行了筛选的表格,下面是筛选销售数据产品不是科罗娜的行计数,DAX写法和结果如下↓
COUNTROW筛选行 =
COUNTROWS(
FILTER('模拟销售数据',
'模拟销售数据'[产品id]<>"1"))
【DISTINCTCOUNT】
DISTINCTCOUNT(<column>)
这个函数用法很简单,只需要对写某一列的字段名就行,但实际应用中非常实用。一般用来计算去重用户数、去重订单数、去重商品数等等,只要需要计算非重复值的数据,都能用上。下面就计算每个产品购买的用户数,DAX写法和结果如下↓
购买用户数 = DISTINCTCOUNT([用户id])
从结果也可以发现,总共有9999个用户,因为有购买多个产品的情况,所以每个产品聚合出来的用户合计会大于9999,这种展示方式也是很合理的。
End
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4