The ultimate Microsoft Fabric, Power BI, Azure AI, and SQL learning event: Join us in Stockholm, September 24-27, 2024.
Save €200 with code MSCUST on top of early bird pricing!
Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
引言:
在某些情况下,我们需要使用 RLS 来限制用户对某些数据的访问,但这可能与某些涉及整体数据的计算(如排名)相冲突。在本文中,我将向您介绍如何实现这一目标。
示例数据:
样本数据中有两张表。
表 1 是评分表,包括员工和渠道。
表 2 是员工表,包括员工和电子邮件。
解决方法:
如果我们直接在涉及总体值计算的表格中使用 RLS,结果往往是错误的。
例如
我们对员工的得分进行了排名,结果如下:
下面是排名度量值:
排名 =
RANKX (
FILTER ( ALL ( '评分' ), '评分'[渠道] = MAX ( '评分'[渠道] ) ),
'评分'[评分],
MAX ( '评分'[评分] ),
DESC,
DENSE
)
如果我们直接使用 RLS,就会受到 RLS 的限制,无法访问所有值。因此,结果并不正确。
以下是设置 RLS 的步骤:
1.从 "建模 "选项卡选择 "管理角色"。
2.在 "管理安全角色 "窗口中,选择 "新建"。
3.在角色下,提供角色名称。这里我们起名为RLS。
4.在 "表 "下,选择要应用 DAX(数据分析表达式)规则的表。
5.在表格筛选器 DAX 表达式框中,输入 DAX 表达式。
创建角色后,在 Power BI Desktop 中测试角色的结果。
1.从 "建模 "选项卡中,选择 "通过以下身份查看"。
2.出现 "以角色身份查看 "窗口,您可以在此查看已创建的角色。选择一个已创建的角色。然后选择确定来应用该角色。
3.选择“确定”。
这是我们预期的结果:
根据我们的描述,以下是我的解决方案步骤。
1.创建一个新表:
总结评分 = SUMMARIZE('评分','评分'[评分],'评分'[渠道])
注意:请避免在任何其他地方使用此表,因为它可能会暴露 RLS 数据。
2. 由于总结评分表仅用于 DAX 计算,不用于创建任何可视效果,因此我们将其隐藏:
注:总结评分表与其他表格之间没有关系。
3.在员工表中创建 RLS。
4. 由于总结评分表与其他表之间没有关系,因此它不会受到 RLS 的影响,而员工表的 RLS 会传递给评分表,这将导致评分表在受到 RLS 限制后保留数据。
现在,您可以对员工的评分进行排名,这是度量值:
员工排序 =
VAR _a =
FILTER ( ALL ( '总结评分' ), [渠道] = MAX ( '评分'[渠道] ))
VAR _b =
ADDCOLUMNS ( _a, "排序", RANKX ( _a, [评分]) )
RETURN
MAXX ( FILTER ( _b, [评分] = MAX ( '评分'[评分] ) ), [排序] )
总结:
在某些需要计算总体值但需要使用 RLS 的情况下,可以使用类似的方法进行计算。
希望这篇文章能对有类似问题的人有所帮助。
作者:唐杰
指导:Ula&Kerry
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Subject | Kudos |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |