Power BI中使用FILTER过滤无直接关联表出现异常行为的问询
为什么过滤无关联事实表会影响另一表的计算结果?
这其实是DAX筛选上下文通过共享维度表传递导致的——虽然First和Second没有直接关系,但它们都连接到dimColour和dimTime这两个维度表,筛选条件会通过这些维度“搭桥”,间接影响另一个事实表的计算范围。
咱们一步步拆解你写的Test_Alone度量值:
- 首先,
FILTER( 'Second'; 'Second'[Colour]="Red" )会筛选出Second表中Colour为Red的行,这个操作会在共享维度dimColour上生成一个筛选规则:只保留Color=Red的维度行。 - 因为
dimColour和First表是1:*的关联关系,这个维度上的筛选会自动传递到First表——也就是说,First表现在只会显示Colour匹配dimColour中被筛选出的Red行。 - 你提到First表中
Alone="Y"的两行数值是1和6,其中肯定有一行的Colour不是Red,所以被这个间接筛选排除了,最后只剩下值为6的那一行,总和自然就是6,而非你预期的7。
当你移除CALCULATE里的FILTER参数后,dimColour没有被施加任何筛选,First表中所有Alone="Y"的行都被纳入计算,结果就回到了7。
另外那三个度量值出现相同行为,本质原因也是一样的:它们都用到了对某一个事实表的筛选,而这个筛选通过共享的维度表传递到了另一个事实表,间接缩小了计算范围。
你可以做个小验证:在报表里加一个dimColour的切片器,选择Red,然后看移除FILTER后的Test_Alone结果,是不是也变成了6?这就能直观确认是维度传递的筛选在起作用。
内容的提问来源于stack exchange,提问作者OscarLar
相关产品推荐
相关产品推荐

