Power BI度量值中DAX 'AND'运算符错误排查求助
修复DAX中的AND运算符错误及度量值优化
嘿,我看到你这个DAX度量值里的AND运算符报错了,这是个很常见的语法小问题,我帮你捋清楚怎么修复,顺便给点优化建议:
首先,直接修复AND语法错误
你写的'Sales By Customers'[Total Sales in MSU] >= y AND <=x不符合DAX的语法规则——DAX里的AND函数(或者&&运算符)要求两边都是完整的布尔表达式,不能省略左边的列引用。你需要重复写一遍列名,把条件补全。
其次,优化变量的取值逻辑
你当前用SUM('Brand Tiers'[TierB])和SUM('Brand Tiers'[TierA])来获取层级阈值,假设你的Brand Tiers表是用来定义单一层级区间的(比如一行数据就是TierA和TierB的阈值),那用SELECTEDVALUE会比SUM更准确,因为SUM会把表中所有行的Tier值加总,可能不是你想要的结果。
修正后的完整度量值
MTierB = VAR y = SELECTEDVALUE('Brand Tiers'[TierB]) // 替换SUM为SELECTEDVALUE,适配单一行阈值场景 VAR x = SELECTEDVALUE('Brand Tiers'[TierA]) RETURN CALCULATE( DISTINCTCOUNT('Sales By Customers'[CUSTOMER_StoreCode]), KEEPFILTERS( FILTER( 'Sales By Customers', 'Sales By Customers'[Total Sales in MSU] >= y && 'Sales By Customers'[Total Sales in MSU] <= x // 修复AND语法,用&&更简洁 ) ) )
额外说明
- 如果你确实需要对
Brand Tiers表中的Tier值求和(比如多行列的阈值总和),那可以把SELECTEDVALUE改回SUM,但一定要确保这符合你的业务逻辑。 - DAX中
&&和AND()函数功能一致,&&是更常用的简写方式,你也可以写成AND('Sales By Customers'[Total Sales in MSU] >= y, 'Sales By Customers'[Total Sales in MSU] <= x),效果完全相同。
内容的提问来源于stack exchange,提问作者Kevin G




