如何用DAX实现多CONTAINSSTRING条件下的Budget列求和?
解决DAX多条件求和筛选问题
你用IN结合CONTAINSSTRING失效的原因是:IN是用来判断值是否属于某个集合,而CONTAINSSTRING返回的是布尔值,两者无法直接组合生效。下面给你两个简洁可行的实现方案:
方案一:直接用OR连接多条件(适合关键词数量少的场景)
Sum_Budget = CALCULATE( SUM(Financial_Tab[Budget]), -- 筛选CBS Code包含"1.2.4"的行 CONTAINSSTRING(Financial_Tab[CBS Code], "1.2.4"), -- 筛选CBS Name包含任意目标关键词的行 OR( CONTAINSSTRING(Financial_Tab[CBS Name], "NOP1"), CONTAINSSTRING(Financial_Tab[CBS Name], "NOP2"), CONTAINSSTRING(Financial_Tab[CBS Name], "NOP3") ) )
方案二:用变量存储关键词集合(适合后续需要扩展关键词的场景)
如果之后要加更多关键词,直接修改变量里的集合即可,不用改逻辑:
Sum_Budget = VAR TargetKeywords = {"NOP1", "NOP2", "NOP3"} RETURN CALCULATE( SUM(Financial_Tab[Budget]), CONTAINSSTRING(Financial_Tab[CBS Code], "1.2.4"), -- 检查当前行的CBS Name是否匹配集合中的任意关键词 COUNTX(TargetKeywords, IF(CONTAINSSTRING(Financial_Tab[CBS Name], [Value]), 1, 0)) > 0 )
这两个方案都能正确返回预期的£50结果。
内容的提问来源于stack exchange,提问作者NMOORE
相关产品推荐
相关产品推荐

