如何在PowerBI中使用DAX通过通配符筛选实现多条件行数统计?
正确DAX写法及问题分析
原公式的问题
- CONTAINSSTRING函数用法错误:该函数的正确格式是
CONTAINSSTRING(要检查的文本列, 目标子字符串),你错误地传入了整个表和一个等式判断,且不需要给目标字符串加通配符*。 - 逻辑结构混乱:IF函数缺少闭合括号,且未同时关联两个筛选条件,导致筛选规则失效,最终统计了所有行。
推荐的正确写法
写法一:CALCULATE + COUNTROWS(最常用简洁)
满足条件的行数 = CALCULATE( COUNTROWS('BI - 22'), 'BI - 22'[Category] = "Image and Data", CONTAINSSTRING('BI - 22'[Creator], "Support") )
- 原理:
CALCULATE修改上下文,仅统计同时满足两个筛选条件的行数量。
写法二:COUNTROWS + FILTER(逻辑更直观)
满足条件的行数 = COUNTROWS( FILTER( 'BI - 22', 'BI - 22'[Category] = "Image and Data" && CONTAINSSTRING('BI - 22'[Creator], "Support") ) )
- 原理:先用
FILTER筛选出符合两个条件的行子集,再统计子集的行数。
可选:使用通配符的写法(用LIKE)
如果你习惯用通配符*,可以替换成LIKE表达式:
满足条件的行数 = CALCULATE( COUNTROWS('BI - 22'), 'BI - 22'[Category] = "Image and Data", 'BI - 22'[Creator] LIKE "*Support*" )
内容的提问来源于stack exchange,提问作者Cheries
相关产品推荐
相关产品推荐

