这与Power BI中的行级安全性有关。这是我要在其上实现此RLS的虚拟表。
我现在正在使用的RLS公式是-
[location] = LOOKUPVALUE([location],[login],USERPRINCIPALNAME())
我的最终要求是使这种RLS能够在以下情况下工作:如果用户登录,则他应该看到该数据(如果他所在的位置),并且还应该看到该位置的其他用户。
但是查找抛出错误:
提供了多个值的表,其中期望有一个值
此外,单个用户可以访问多个位置,而单个位置可以有多个用户。
如何使用Lookup或任何其他可能的方式实现这种级别的行级安全性?
答案 0 :(得分:1)
您的要求也可以通过这种方式完成,您需要同时在Power BI桌面和应用服务器上工作才能实现此目的。
因此,您可以像这样创建'n'个角色,然后发布仪表板。
现在,打开app.powerbi.com,然后转到相应的数据集并 右键单击它,选择安全性-您将在其中找到组。
在“网上论坛”上,输入应具有访问权限的电子邮件ID。 您可以在多个组中添加一个人,这样他们就可以看到 不止一组。
还要记住,只有有权访问仪表板的人员才能看到其中的数据。因此,您将需要与他们共享,并且需要将其添加到组中。如果您无法执行其中一项操作,那么他们将在仪表板上看不到任何内容。
这是一种更好的方法,我认为这是您要的方法,
[login] = username()
username()函数会自动获取已登录用户的电子邮件地址。
在所需表中的新角色上创建上述过滤器。 这样,您仍将在相应数据集的安全性部分下的角色内手动添加这些50000个用户。
但是,如果它们都属于组织中的特定组,并且您的Office-365团队以正确的方式配置了后端,那么您只需要输入该组即可。
但是大多数公司的后端都没有此配置,因为很难控制数据安全性。
要满足您的要求,您还需要更改数据模型。
您最初需要拥有两个表。
值表-您可以在其中有很多列,例如name和all,但这没关系。
位置电子邮件地址表作为第二个表。
现在将位置从“值”表合并到“电子邮件地址”表,这将成为您的最终表。将此用于可视化,但是请在DAX上非常清楚-因为您可能有重复的行和不同的值。
现在在此表上创建RLS。它应该工作。
顾名思义,行级安全性应用于每行。因此,将分别为每一行评估该公式。因此,您唯一的选择是拥有一个包含所有值的平面表。