如何实现基于客户维度应用的RLS过滤多个维度的RLS配置?

问题描述 投票:0回答:1

我有一个包含以下列的数据集:

日期、销售金额、产品、客户、客户、服务提供商、供应商。

该报告将与客户(外部用户)共享。

  • 报表模型尚未设计
  • 报告必须有以下列的切片器:产品、客户、客户、服务提供商、供应商
  • Customer A
    打开报告时,应仅向他们显示与其关联的产品、客户、供应商、服务提供商。不应该允许他们看到其他客户的产品、客户、供应商、服务提供商。

我的解决方案是将日历表、客户表和其余列放在一个主表中。因此,我可以在客户表上应用 RLS,该表将自动过滤主表,并且实际上所有切片器将仅显示与该特定客户相关的数据。

这种方法的副作用是表不再是星型模式,因为除了日期(日历)和客户之外的所有内容都在一个表中。

在这种情况下,在制作星型模式模型时设计理想解决方案的方法是什么?

powerbi
1个回答
0
投票

您需要保持模型星型模式如下:

enter image description here

从维度到事实表的交叉过滤方向是单一的。

(我无法发现客户/客户端之间的区别,所以我在解决方案中使用了 DimCustomer)

由于该报告面向外部客户,因此应在客户维度级别应用 RLS。通过这种方式,您将允许根据登录的客户过滤事实表和其他维度中的所有相关数据。

在 DimCustomer 中,您需要设置 RLS 角色,在其中过滤此表中的行,以确保用户只看到与他们相关的数据。

以PBI服务为例:

[CustomerEmail] = USERPRINCIPALNAME()

CustomerEmail 需要与用户电子邮件或其他唯一标识符匹配。

通过事实表和维度之间的关系,DimCustomer维度上的RLS会自动过滤事实表。

© www.soinside.com 2019 - 2024. All rights reserved.