故事背景
昨天有同事询问,需要使用Power BI统计某张表的编码或者订单号出现的次数,有点类似Excel中的countif函数,但是不知如何实现?PowerBI有没有类似的函数呢?
解决方案
根据需求对数据信息进行统计是个很常见的需求,如果是在Excel中,我相信大家肯定会使用Excel的COUNTIF函数来计算,但是在PowerBI中确实没有与COUNTIF函数功能完全相同的函数。
那我们在Power BI中怎么才能实现这个需求?我们可以使用DAX创建新列或新建度量值来统计信息出现的次数。
以下是两种方法的步骤和示例:
举例,假如样例数据源表如下,我们需要统计表中【客户名称】出现的次数。
Solution1:通过创建新列
1,打开Power BI Desktop:启动Power BI Desktop 应用程序。
2,加载数据:通过“获取数据”连接到包含你想要分析的数据的数据源。这里是连接本地Excel样例表。
3,创建新列:
在你想要添加新列的表,点击【报表视图】->【表工具】 ->【新建列】。
4,在公式栏中,编写DAX公式:
使用COUNTROWS函数结合FILTER函数来统计每个客户名称出现的次数。例如,假设你的表名为订单表,客户名称的列名为客户名称,你可以使用以下DAX公式:CountNums =
CALCULATE(
COUNTROWS('销售表'),
FILTER(
'销售表',
'销售表'[客户名称]=EARLIER('销售表'[客户名称])
)
)
这个公式中,EARLIER函数用于引用当前行的客户名称值。
5,确认并应用:
输入公式后,按Enter键确认。
我们可以看到Power BI将计算每个客户名称出现的次数,并在新列中显示。
Solution2:通过创建度量值
1,打开Power BI Desktop。
2,加载数据:通过“获取数据”连接到包含你想要分析的数据的数据源。这里是连接本地Excel样例表。
3,创建度量值:
在你想要添加新列的表,点击【报表视图】->【表工具】 ->【新建度量】。
4,在公式栏中,编写DAX公式:
使用COUNTROWS函数结合FILTER函数来创建一个度量值,用于统计每个客户名称出现的次数。使用以下DAX公式:
CountNums_Measure=
CALCULATE(
COUNTROWS('销售表'),
FILTER(
'销售表',
'销售表'[客户名称]='销售表'[客户名称]
)
)
这个公式中,我们没有使用EARLIER函数,因为度量值默认在行上下文中进行计算。
5,确认并应用:
输入公式后,按Enter键确认。
现在你可以将这个度量值添加到视觉对象中,如表格或卡片,以展示每个客户名称出现的次数。
在实际应用中,选择哪种方法取决于你的具体需求和数据模型的复杂性。通常,对于简单的计数和直接的数据操作,新列是一个好选择。而对于需要优化性能和实现复杂交互的高级分析,度量值可能更合适。
今天分享结束,感谢大家的支持。请大家持续订阅和关注我的公众号: PowerBI工坊