Power BI报错:无法确定表'Query1'中'ReleaseGuidelineId'的单一值
解决DAX度量值"无法确定列单一值"报错问题
报错原因
你编写的Testfield被定义为度量值,但直接引用了表中的列('Query1'[ReleaseGuidelineId]、'Query1'[ReleaseGuidelineIdOverriddenTo])。度量值是在当前筛选上下文下计算的,如果筛选后列中存在多个值,DAX无法确定使用哪个值来执行条件判断,因此触发该报错。
解决方案
方案1:改为计算列(推荐,若需逐行生成值)
如果你的需求是为表中每一行生成对应的Testfield值,直接将其创建为计算列即可,这里用更简洁的SWITCH函数替代嵌套IF优化逻辑:
Testfield = SWITCH ( TRUE (), 'Query1'[ReleaseGuidelineId] = 1 && 'Query1'[ReleaseGuidelineIdOverriddenTo] = 2, "Up to 2", 'Query1'[ReleaseGuidelineId] = 1 && 'Query1'[ReleaseGuidelineIdOverriddenTo] = 3, "Up to 3", 'Query1'[ReleaseGuidelineId] = 2 && 'Query1'[ReleaseGuidelineIdOverriddenTo] = 3, "Up to 3", 'Query1'[ReleaseGuidelineId] = 3 && 'Query1'[ReleaseGuidelineIdOverriddenTo] = 2, "Down to 2", BLANK () )
计算列是逐行执行计算的,直接引用列不会存在多值冲突的问题。
方案2:保留为度量值(添加聚合函数)
如果必须将Testfield作为度量值,需要使用聚合函数确保在筛选上下文下获取单一值,推荐使用SELECTEDVALUE(适合筛选后仅存在单个值的场景):
Testfield = VAR CurrentGuideline = SELECTEDVALUE('Query1'[ReleaseGuidelineId]) VAR CurrentOverridden = SELECTEDVALUE('Query1'[ReleaseGuidelineIdOverriddenTo]) RETURN SWITCH ( TRUE (), CurrentGuideline = 1 && CurrentOverridden = 2, "Up to 2", CurrentGuideline = 1 && CurrentOverridden = 3, "Up to 3", CurrentGuideline = 2 && CurrentOverridden = 3, "Up to 3", CurrentGuideline = 3 && CurrentOverridden = 2, "Down to 2", BLANK () )
SELECTEDVALUE会在当前筛选上下文对应列仅含一个值时返回该值,否则返回空白(可通过第二个参数自定义默认值),从而避免多值判断的冲突。
内容的提问来源于stack exchange,提问作者Divya Jennifer Jayaraj
相关产品推荐
相关产品推荐

