Power BI:如何基于另一表切片器返回目标表的Cost值?
问题原因分析及解决方法
问题原因
- 冗余的
USERELATIONSHIP调用:两表已建立主动的1对多关系,无需额外调用该函数,反而会干扰筛选上下文的正常传递。 - 错误的筛选条件写法:
table_2[Year] = V_year这类条件属于无效筛选——V_year是切片器选中值,而直接用Table_2的列等于该变量,会匹配Table_2中所有符合该条件的行,但切片器已经完成了这一步筛选,重复添加此类条件会导致筛选上下文混乱,无法正确传递到Table_1,最终导致Table_1的全部Cost被求和。 - 忽略关系的自动筛选:切片器基于Table_2的字段,筛选上下文会自动通过已建立的1对多关系传递到Table_1,无需手动提取变量再做筛选。
解决方法
方法一:利用关系自动传递筛选(最简方案)
因为每个Joining_field在Table_1中对应唯一的Cost值,用SUM或MAX均可得到正确结果:
Correct_Cost = SUM(Table_1[Cost])
或更精准的写法(避免多值场景的歧义):
Correct_Cost = MAX(Table_1[Cost])
方法二:手动指定筛选范围(适用于特殊场景)
如果需要明确控制筛选逻辑,可通过VALUES获取Table_2筛选后的Joining_field集合,再匹配Table_1的对应行:
Correct_Cost = CALCULATE( SUM(Table_1[Cost]), Table_1[Joining_field] IN VALUES(Table_2[Joining_field]) )
内容的提问来源于stack exchange,提问作者SRJCoding
相关产品推荐
相关产品推荐

