DAX计算:筛选region列含"th"的记录总销售额
DAX公式修正方案
问题分析
你需要筛选出region列包含"th"的记录,计算sales amount总和。原公式未得到正确结果,核心原因是筛选器的上下文逻辑错误:直接在CALCULATE的筛选参数中使用行上下文的SEARCH表达式,无法正确生成全局的筛选上下文。
正确公式
方案1:兼容所有DAX版本(FILTER+SEARCH)
CALCULATE( SUM(t[sales amount]), FILTER( ALL(t[region]), SEARCH("th", t[region], , 0) > 0 ) )
FILTER(ALL(t[region]), ...):遍历所有不重复的region值,筛选出包含"th"的项SEARCH("th", t[region], , 0):找不到"th"时返回0,>0表示匹配成功
方案2:DAX 2019及以上版本推荐(CONTAINSSTRING)
CALCULATE( SUM(t[sales amount]), CONTAINSSTRING(t[region], "th") )
CONTAINSSTRING是DAX专门用于判断字符串包含关系的函数,写法更简洁,默认不区分大小写- 若需要区分大小写,改用
CONTAINSSTRINGEXACT
验证结果
根据你提供的数据,符合条件的region是North和South,总和为:
(100+150+200)+(50+75+100) = 675,使用上述公式可得到正确结果。
内容的提问来源于stack exchange,提问作者Zeren
相关产品推荐
相关产品推荐

