Powerbi 如何基于用户名和位置应用动态行级安全性?
这与Power BI中的行级安全性有关。这是一个虚拟表,我想在它上面实现这个RLS 我现在使用的RLS公式是-Powerbi 如何基于用户名和位置应用动态行级安全性?,powerbi,powerbi-desktop,row-level-security,Powerbi,Powerbi Desktop,Row Level Security,这与Power BI中的行级安全性有关。这是一个虚拟表,我想在它上面实现这个RLS 我现在使用的RLS公式是- [location] = LOOKUPVALUE([location],[login],USERPRINCIPALNAME()) 我的最终要求是让这个RLS在这样的情况下工作:如果用户登录,他应该看到他所在位置的数据,并且还应该看到同一位置的其他用户 但是查找抛出了一个错误: 提供了一个包含多个值的表,其中预期只有一个值 此外,单个用户可以访问多个位置,单个位置可以有多个用户 如
[location] = LOOKUPVALUE([location],[login],USERPRINCIPALNAME())
我的最终要求是让这个RLS在这样的情况下工作:如果用户登录,他应该看到他所在位置的数据,并且还应该看到同一位置的其他用户
但是查找抛出了一个错误:
提供了一个包含多个值的表,其中预期只有一个值
此外,单个用户可以访问多个位置,单个位置可以有多个用户
如何使用查找或任何其他可能的方式实现此级别的行级安全性?您的要求也可以通过这种方式实现,您需要同时在Power BI桌面和应用服务器上工作才能正确实现 在桌面上
[login] = username()
函数username()自动获取登录用户的电子邮件地址
在所需表中的新角色上创建上述筛选器。
这样,您仍然可以在相应数据集的安全部分下的角色中手动添加这50000个用户
但是,如果它们都属于组织中的特定组,并且您的Office-365团队以正确的方式配置了后端,则您只需输入该组
但大多数公司的后端没有这种配置,因为很难控制数据安全性
更改数据模型
为了满足您的需求,您还需要更改数据模型
最初需要有两个表
值表-可以有许多列,比如name和all,但这并不重要
位置的电子邮件地址表作为第二个表
现在将位置从值表合并到电子邮件地址表,这将是您的最终表。使用这个可视化,但请在DAX上非常清楚-因为您可能有重复的行和不同的值
现在在此表上创建RLS。它应该会起作用
顾名思义,行级安全性应用于每一行。因此,将对每行单独计算公式。因此,您唯一的选择是拥有一个包含所有值的平面表。好吧,谢谢。但这只是一个虚拟数据。在原始数据中,我有50000个用户。因此,实际上不可能将角色分配给这么多用户。这就是为什么我一直在寻找更好的方法。有一种方法,给我一天时间,我会用一个工作原型来回答。非常感谢Sid29,我热切地等待你的工作原型。谢谢@Sid29,正如你在我的问题中看到的,在我使用的USERPRINCIPALNAME()的DAX公式中这有助于我做和你现在说的一样的事情。但我的最终要求是,如果用户登录,他还应该看到来自同一位置的其他用户的详细信息。通常使用USERNAME(),我只能看到此人的详细信息,但正如我在问题中所示,用户也可以有不同的位置。那么,在这种情况下,你知道如何让它工作吗?谢谢大家!@哦,很棘手的一个,不是吗。那你需要一张平桌。更新。这可能对你有帮助。请阅读-总结是,这不是一个理想的方式来解决志愿者,可能会适得其反获得答案。请不要将此添加到您的问题中。