DAX中CONTAINSSTRING无法检索字符串,行计数公式失效求助
DAX统计符合条件行数返回BLANK的解决办法
问题描述
有一张名为GL Account Group - GLACGRP的表,需要统计Account Group Name列包含指定内容的行数,但编写的DAX公式返回BLANK,卡片组件显示空值。使用的公式如下:
Asset Rows = COUNTROWS( FILTER( 'GL Account Group - GLACGRP', CONTAINSSTRING('GL Account Group - GLACGRP'[Account Group Name], "assets") ) )
数据中Account Group Name列包含Non Current Assets、Current Assets等带有"Assets"的条目。
解决方案
核心问题:大小写不匹配
CONTAINSSTRING是大小写敏感的函数,公式中使用的小写"assets"无法匹配数据里首字母大写的"Assets",导致没有符合条件的行,最终返回BLANK。可以通过以下两种方式解决:
- 使用不区分大小写的
SEARCH函数判断
Asset Rows = COUNTROWS( FILTER( 'GL Account Group - GLACGRP', ISNUMBER(SEARCH("assets", 'GL Account Group - GLACGRP'[Account Group Name],,0)) ) )
SEARCH会忽略大小写查找字符串,找到则返回位置(数字),找不到返回0(最后一个参数指定的默认值),用ISNUMBER判断是否匹配成功。
- 统一转换为小写后匹配
Asset Rows = COUNTROWS( FILTER( 'GL Account Group - GLACGRP', CONTAINSSTRING(LOWER('GL Account Group - GLACGRP'[Account Group Name]), "assets") ) )
通过LOWER函数将列值转为小写,再用CONTAINSSTRING匹配小写的"assets",实现不区分大小写的效果。
额外排查点
- 确认表名
GL Account Group - GLACGRP拼写完全正确,包括空格和特殊字符 - 检查
Account Group Name列是否被隐藏或应用了筛选器,导致目标行被排除 - 确认没有行级安全规则限制了该表的数据访问
内容的提问来源于stack exchange,提问作者Vivek Sharma
相关产品推荐
相关产品推荐

