Don't miss your chance to take exam DP-600 or DP-700 on us!
Request nowFabric Data Days Monthly is back. Join us on March 26th for two expert-led sessions on 1) Getting Started with Fabric IQ and 2) Mapping & Spacial Analytics in Fabric. Register now
引言:
在某些情况下,我们需要使用 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.