DAX如何实现列求和并排除对应列含指定文本片段的行?
DAX 排除含指定前缀内容的求和实现方案
原公式问题说明
- 仅匹配完整关键词
Payment,无法命中Pay、Paym等短前缀内容 - 未添加
NOT取反筛选逻辑,实际生效的是「仅统计包含Payment的行」,和需求完全相反
正确实现方案
DAX 支持类NOT LIKE %Pay%的匹配逻辑,常用两种实现方式:
方案1:NOT + CONTAINSSTRING(最直观写法)
CONTAINSSTRING是DAX原生用于判断文本是否包含指定子串的函数,默认大小写不敏感,配合NOT取反即可实现排除逻辑:
Total Dollars = CALCULATE( SUM('Union'[Dollars]), FILTER( 'Union', NOT CONTAINSSTRING('Union'[Description], "Pay") ) )
如果需要严格区分大小写,可替换为CONTAINSSTRINGEXACT函数。
方案2:SEARCH函数(兼容旧版DAX写法)
如果使用的DAX版本不支持CONTAINSSTRING,也可以用SEARCH函数实现,匹配不到内容时会返回错误,配合ISERROR即可实现排除:
Total Dollars = CALCULATE( SUM('Union'[Dollars]), FILTER( 'Union', ISERROR(SEARCH("Pay", 'Union'[Description], 1, -1)) ) )
两种方案都可实现所有包含Pay连续字符的行被排除出求和统计的需求,完全匹配你的业务规则。
内容的提问来源于stack exchange,提问作者Empyz
相关产品推荐
相关产品推荐

