Power BI中DAX的CALCULATE与IF函数结合使用问题
解决方案
你的代码存在两个关键问题:
- 字符串常量
Companies未加双引号,DAX会将其识别为列名而非目标文本值 - 在
CALCULATE的聚合参数中直接引用'PIB'[Name]列,当筛选上下文不明确时会导致计算错误,需用SELECTEDVALUE获取当前上下文的Name值
以下是两种可行的实现方式:
方法1:基于上下文判断的聚合计算
Data = VAR BaseSum = CALCULATE(SUM('PIB'[Value]), 'PIB'[Filter] = "Dato base") VAR CurrentName = SELECTEDVALUE('PIB'[Name]) RETURN IF(CurrentName = "Companies", BaseSum * -1, BaseSum)
方法2:逐行迭代计算
如果需要对符合条件的每一行单独应用判断逻辑后再求和,可使用SUMX实现:
Data = SUMX( FILTER('PIB', 'PIB'[Filter] = "Dato base"), IF('PIB'[Name] = "Companies", 'PIB'[Value] * -1, 'PIB'[Value]) )
说明
- 方法1适合在按
Name分组的可视化组件中使用,SELECTEDVALUE会自动获取当前分组对应的Name值 - 方法2直接对满足
Filter条件的行逐一处理后求和,逻辑更直观,适合无额外分组上下文的场景
内容的提问来源于stack exchange,提问作者Enrique A
相关产品推荐
相关产品推荐

