我有一个包含以下列的数据集:
日期、销售金额、产品、客户、客户、服务提供商、供应商。
该报告将与客户(外部用户)共享。
Customer A
打开报告时,应仅向他们显示与其关联的产品、客户、供应商、服务提供商。不应该允许他们看到其他客户的产品、客户、供应商、服务提供商。我的解决方案是将日历表、客户表和其余列放在一个主表中。因此,我可以在客户表上应用 RLS,该表将自动过滤主表,并且实际上所有切片器将仅显示与该特定客户相关的数据。
这种方法的副作用是表不再是星型模式,因为除了日期(日历)和客户之外的所有内容都在一个表中。
在这种情况下,在制作星型模式模型时设计理想解决方案的方法是什么?
您需要保持模型星型模式如下:
从维度到事实表的交叉过滤方向是单一的。
(我无法发现客户/客户端之间的区别,所以我在解决方案中使用了 DimCustomer)
由于该报告面向外部客户,因此应在客户维度级别应用 RLS。通过这种方式,您将允许根据登录的客户过滤事实表和其他维度中的所有相关数据。
在 DimCustomer 中,您需要设置 RLS 角色,在其中过滤此表中的行,以确保用户只看到与他们相关的数据。
以PBI服务为例:
[CustomerEmail] = USERPRINCIPALNAME()
CustomerEmail 需要与用户电子邮件或其他唯一标识符匹配。
通过事实表和维度之间的关系,DimCustomer维度上的RLS会自动过滤事实表。