Power BI表格视觉中Switch+DIVIDE显示空值,卡片视觉正常问题排查
问题原因及解决方案
核心原因:SELECTEDVALUE在表格上下文的行为差异
卡片视觉对象通常基于单一筛选上下文(比如你通过切片器选中了单个accountId),SELECTEDVALUE(financialStatementStructure[accountId])能正确返回唯一值,因此SWITCH可以匹配到对应分支并计算结果。
但在表格视觉对象中,行是基于financialStatementStructure[accountId]的多个值展开的,此时筛选上下文里financialStatementStructure[accountId]包含多个值,SELECTEDVALUE会返回空值(它仅在筛选上下文有且仅有一个值时返回该值,否则返回BLANK),导致SWITCH没有匹配分支,最终返回空值。
其他潜在影响因素
- 度量值上下文冲突:
[100]等度量值中使用了ALL('date'),虽然通过SELECTEDVALUE('date'[yearQuarter])获取切片器的季度值,但如果date表与其他表的关系在表格行上下文里被意外筛选,可能导致计算结果为空。不过卡片能正常显示说明这部分逻辑本身成立,主要问题还是出在SELECTEDVALUE上。 - FORMAT函数的文本返回特性:当底层度量值(如
[100])返回BLANK时,FORMAT(BLANK, "#,##0")会返回空字符串,而卡片视觉对象对空值的处理更友好(比如你看到的正常显示,是因为卡片对应的筛选上下文里底层度量值有数据)。
修复方案
将SWITCH函数中的SELECTEDVALUE(financialStatementStructure[accountId])替换为MAX(financialStatementStructure[accountId])(或MIN,因为每行的accountId是唯一值),这样在表格的行上下文里能正确获取当前行的accountId值:
Actual PY = SWITCH( MAX(financialStatementStructure[accountId]), 100, FORMAT([100], "#,##0"), 1, FORMAT([currentAssetsInPercent], "0.0%"), 200, FORMAT([200], "#,##0"), 300, FORMAT([300], "#,##0"), 400, FORMAT([400], "#,##0"), 500, FORMAT([500], "#,##0"), 600, FORMAT([600], "#,##0"), 700, FORMAT([700], "#,##0"), 800, FORMAT([800], "#,##0"), 900, FORMAT([900], "#,##0") )
如果需要兼容无筛选的场景,也可以给SELECTEDVALUE添加默认值:
Actual PY = SWITCH( SELECTEDVALUE(financialStatementStructure[accountId], MAX(financialStatementStructure[accountId])), // 后续分支保持不变 )
另外,可验证financialStatementStructure与combinedAccountValue的accountId关联是否正确,确保每行accountId能对应到正确的数值数据。
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

