Power BI矩阵视觉中度量值引用行时返回错误值排查
问题描述
现有两个表:
- Scope表:
| Scope | Index |
|---|---|
| National | 0 |
| State | 1 |
| NY | 2 |
| CA | 3 |
- State表:
| State | Index | Scope |
|---|---|---|
| NY | 2 | State |
| CA | 3 | State |
两表通过Scope列建立关系,且使用Scope[Scope]作为切片器。编写的度量值如下:
StateisSelectedScope = IF(SELECTEDVALUE('Scope'[Scope]) = SELECTEDVALUE(State[State]), 1, 0)
但选中切片器中的NY时,矩阵中所有值都为0,预期结果应为:
| State | StateisSelectedScope |
|---|---|
| NY | 1 |
| CA | 0 |
请问公式遗漏了什么?
问题原因
当你在切片器选中NY时,两表的关联关系会自动筛选State表,此时State表只剩下NY这一行数据。矩阵里显示的CA行处于筛选上下文之外,SELECTEDVALUE(State[State])在CA行返回空白值,和选中的NY不相等,所以整个矩阵都返回0。
解决方案
修改度量值,忽略关系对State表的筛选,保留所有州的行,再判断当前行的州名是否等于选中的Scope值:
StateisSelectedScope = VAR SelectedScope = SELECTEDVALUE('Scope'[Scope]) RETURN IF(MAX(State[State]) = SelectedScope, 1, 0)
如果需要更严谨地处理空白情况(比如切片器未选中任何值时),可以用:
StateisSelectedScope = VAR SelectedScope = SELECTEDVALUE('Scope'[Scope]) RETURN IF( NOT ISBLANK(SelectedScope) && MAX(State[State]) = SelectedScope, 1, 0 )
解释:用MAX(State[State])获取当前矩阵行对应的州名(矩阵行上下文里每个行对应唯一State值,MAX不会因筛选上下文丢失返回空白),再和切片器选中的Scope值比较,即可得到正确结果。
内容的提问来源于stack exchange,提问作者Sweepster
相关产品推荐
相关产品推荐

