Power BI DAX 实现多条件分组计数:统计同时满足两类条件的分组数量
DAX实现双条件匹配的分组计数方案
核心计算逻辑
按照场景规则,统计核心是逐组校验双条件的存在性,而非全表直接计数:
- 遍历所有出现过的分组,分别判断每个分组下是否存在C1条件对应的有效非空值、是否存在C2条件对应的有效非空值
- 仅将两个判断同时为真的分组纳入最终统计数量
可直接复用的度量值代码
同时匹配双条件的分组总数 = // 第一步:生成所有分组的逐组校验标记表 VAR GroupCheckTable = ADDCOLUMNS ( // 提取所有不重复的分组维度值 VALUES ( '你的业务表'[分组标识列] ), // 标记当前分组是否存在C1的有效非空值 "HasC1Value", CALCULATE ( COUNTROWS ( '你的业务表' ), '你的业务表'[条件列] = "C1", NOT ISBLANK ( '你的业务表'[值列] ) ) > 0, // 标记当前分组是否存在C2的有效非空值 "HasC2Value", CALCULATE ( COUNTROWS ( '你的业务表' ), '你的业务表'[条件列] = "C2", NOT ISBLANK ( '你的业务表'[值列] ) ) > 0 ) // 第二步:过滤出同时满足双条件的分组,统计数量 RETURN COUNTROWS ( FILTER ( GroupCheckTable, [HasC1Value] = TRUE() && [HasC2Value] = TRUE() ) )
代码使用说明
- 替换占位符即可直接运行:把代码内的
你的业务表替换为实际存储明细数据的表名,分组标识列替换为存储A/B/C这类分组维度的字段,条件列替换为标记C1/C2的字段,值列替换为用来判断“存在有效数据”的目标字段 - 灵活适配判定规则:如果你的“存在值”判断标准不是非空,而是要求数值大于0、达到某一业务阈值,直接把代码里的
NOT ISBLANK ( '你的业务表'[值列] )替换为对应判断逻辑即可,例如'你的业务表'[值列] > 100 - 场景结果验证:按照你举例的分组规则计算时,仅分组A会被判定为同时满足双条件;分组B因缺少C1对应值被过滤;分组C因双条件都无有效数据被过滤,最终输出结果为1,和预期完全一致
内容的提问来源于stack exchange,提问作者Aibloy
相关产品推荐
相关产品推荐

