我有一个销售事实,一个客户维度和一个销售人员维度。联接如下:
Sales Fact * <----- 1 Customer Dimension (based on Customer ID)
Customer Dimension * <----- 1 Sales Person Dimension (based on Sales Person ID)
所有表上都存在销售人员ID。数据的特征之一是,销售人员可以直接与销售事实中的单个销售相关联,也可以与客户所属的销售相关联,如客户维度中记录的那样。
我的目标是编写DAX来分别捕获两个关联:
以客户为导向的销售=属于特定销售人员的客户的销售
代表驱动的销售=由销售人员直接进行的销售,即使是属于不同销售人员的客户
另一个限制是,我希望能够使用“销售人员”维度属性作为在Power BI中呈现和切片所有数据的维度,并作为行级安全性的基础。
以客户为导向的销售很容易;表之间的默认关系自然处理它。但是,我无法使销售代表驱动的销售指标在我所有的限制内起作用。
例如,我尝试直接利用Sales和Sales Person之间的非活动关系,例如
CALCULATE (
SUM[Sales],
USERELATIONSHIP ( 'Sales Person'[Sales Person ID], 'Sales'[Sales Person ID] )
)
但是将行级安全过滤器应用于Sales Rep表时,从Sales Rep的角度进行查看时会发生错误,因为两个联接将同时起作用。
我通过将行级过滤器放到“客户”维度上来略微修改了该尝试,但这使销售人员可以看到为该销售人员的客户进行销售的其他销售人员,而这是RLS所不希望的视角。
然后,我将USERELATIONSHIP函数更改为RELATED函数,并将RLS筛选器返回到Sales Person维度。但是,将“销售人员”的“销售人员名称”字段放入具有该度量的表中时,它仅显示“销售人员”为自己的客户进行的销售,而忽略了他们为其他客户进行的销售。我想这一定是因为从销售人员到客户再到销售的关系正在过滤掉与销售人员无关的客户。
这就是为什么我想知道是否有一种方法可以模拟右外部联接,以便我可以使用“销售人员”维度字段对销售事实进行分组,同时还汇总一些将被左侧过滤掉的事实由于这种关系而发生的外部联接。