You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI(DAX):按行统计指定数值出现次数

在Power BI中用DAX按行统计指定数值列表的出现次数

需求说明

需创建DAX度量值,按行统计指定数值列表(如17、19)在该行多列中的出现次数;因数据行数过多无法采用转置方法,且后续要支持多组不同目标数值列表的统计。

原始数据示例

列A列B列C列D
第1行19171616
第2行17192019

期望结果

出现次数
第1行2
第2行3

解决方案

1. 固定目标数值的度量值

如果目标数值固定(如仅统计17、19),可直接逐列判断并累加次数:

出现次数 = 
INT(SELECTEDVALUE('表'[列A]) IN {17,19}) +
INT(SELECTEDVALUE('表'[列B]) IN {17,19}) +
INT(SELECTEDVALUE('表'[列C]) IN {17,19}) +
INT(SELECTEDVALUE('表'[列D]) IN {17,19})
  • 原理:INT(条件)将符合条件的情况转为1,不符合转为0,累加后得到该行总出现次数;SELECTEDVALUE用于获取当前行上下文对应列的值。

2. 支持多组目标数值的动态度量值

若需切换不同目标数值组统计,先创建一个目标数值参数表(手动输入或导入),示例结构如下:

组名称目标数值
组1(17/19)17
组1(17/19)19
组2(16/20)16
组2(16/20)20

再创建动态度量值,根据选择的组自动匹配目标数值:

动态出现次数 = 
VAR TargetValues = VALUES('目标数值组'[目标数值])
RETURN
INT(SELECTEDVALUE('表'[列A]) IN TargetValues) +
INT(SELECTEDVALUE('表'[列B]) IN TargetValues) +
INT(SELECTEDVALUE('表'[列C]) IN TargetValues) +
INT(SELECTEDVALUE('表'[列D]) IN TargetValues)
  • 使用时添加切片器选择「组名称」,即可切换不同目标组的统计结果。

3. 列数量较多时的简化写法

当需统计的列数量较多时,可将当前行的列转为临时表后统计,避免逐列编写判断:

出现次数 = 
VAR TargetValues = {17,19} -- 替换为VALUES('目标数值组'[目标数值])可实现动态统计
VAR RowColumnValues = 
    UNION(
        ROW("数值", SELECTEDVALUE('表'[列A])),
        ROW("数值", SELECTEDVALUE('表'[列B])),
        ROW("数值", SELECTEDVALUE('表'[列C])),
        ROW("数值", SELECTEDVALUE('表'[列D]))
        -- 继续添加需要统计的列
    )
RETURN
COUNTROWS(FILTER(RowColumnValues, [数值] IN TargetValues))
  • 原理:通过UNION和ROW将当前行各列值整合为临时表,再用COUNTROWS统计其中符合目标数值的行数。

内容的提问来源于stack exchange,提问作者brightlilac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 18:33:26