如何使用DAX计算带筛选的SUM?包含匹配公式返回空值求助
解决DAX公式无法匹配包含"Student"记录的问题
原公式返回空值的核心原因是:DAX中使用=进行字符串匹配时是精确匹配,"*Student*"会被当作普通字符串(包含星号)而非通配符,因此筛选条件永远无法匹配到记录。
以下是几种正确的解决方案:
方法1:使用CONTAINSSTRING函数(推荐)
CONTAINSSTRING是DAX中专门用于检查字符串是否包含指定子串的函数,语法简洁直观:
Total = SUMX(FILTER('Backlog items', CONTAINSSTRING('Backlog items'[Name], "Student")), [Score])
方法2:使用SEARCH函数
SEARCH会返回子串在目标字符串中的起始位置,若找不到则返回错误,配合NOT ISERROR判断是否包含:
Total = SUMX(FILTER('Backlog items', NOT ISERROR(SEARCH("Student", 'Backlog items'[Name]))), [Score])
注:若需要区分大小写,可替换为FIND函数。
方法3:使用CALCULATE + LIKE语法
在CALCULATE的筛选器中支持LIKE通配符语法,写法更简洁:
Total = CALCULATE(SUM('Backlog items'[Score]), 'Backlog items'[Name] LIKE "*Student*")
内容的提问来源于stack exchange,提问作者Cheries
相关产品推荐
相关产品推荐

