本文翻译自国际Power BI大师Alberto Ferrari的文章——《Bidirectional relationships and ambiguity in DAX》,文中探讨了使用双向筛选器时可能出现的歧义类型。
在表格数据模型中激活双向筛选器可能会在关系链中创建不明确的路径,导致创建出数据变得难以预测的模型。本文对使用双向关系时可能出现的歧义类型进行了深入的阐释。
关系可设置为单向(默认)和双向。单向关系中,上下文筛选器可从单侧传递到多侧,但不能反向传递。换句话说,在下图中,Customer表上的筛选器会自动传递至Sales表,然而,Sales表上的筛选器不会传递到Product表上,更不会传递到Customer表或者Date表上。
这种情况普遍存在于大多数报表,在实际场景中,报告通常根据Customer或Product的属性划分销售额,根据销售额筛选Customer或Product是很少见的。
因此,启用双向筛选器最普遍的原因便是同步切片器。
下图的报告中有两个切片器,一个用于Customer 中的Name,另一个用于Product中的Color,右侧矩阵提供了Sales的详细信息:
这份报告可正常运行并能显示Amanda的采购情况,然而,Color切片器并没有筛选Amanda购买的几种颜色。通过在报告中输入颜色词条可以很轻易地看出她购买了哪种颜色,但是切片器难以向用户提供简单的反馈。原因在于Customer表上的筛选器已经传递到了Sales表,因此,它仅筛选所选用户的销售情况,但是筛选器不会自动从Sales表流向Product表,因为这两者之间已被默认设置为单向关系。
对于这个问题,有一个简单的解决方法:将Product表和Sales表之间