You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI多表关联场景下行级安全(RLS)分级查看权限配置咨询

多表关联模型行级安全(RLS)配置方案

你已经掌握的Email = USERPRINCIPLENAME()基础规则可以直接复用,不需要拆分原有Employee Roles表,按以下步骤配置即可满足所有权限要求:

1. 前置模型关系确认

先确认3张核心表的关联关系已正确配置:

  • Employee表[员工ID] 一对多关联 Employee Roles表[员工ID],关系激活
  • Groups表[组编码] 一对多关联 Employee Roles表[所属员工组编码],关系激活
  • 所有员工业务明细表均多对一关联Employee表[员工ID],关系激活

2. 配置Employee表RLS规则

所有业务明细表均关联Employee表,只需在Employee表上配置1条RLS规则即可全局生效,规则的DAX代码如下:

VAR CurrentUserEmail = USERPRINCIPLENAME()
// 获取当前登录用户对应的员工ID
VAR CurrentEmpID = CALCULATE(MAX(Employee[员工ID]), Employee[邮箱] = CurrentUserEmail)
// 获取当前用户作为主管管辖的所有Management类型组
VAR ManagedGroups = CALCULATETABLE(
    VALUES('Employee Roles'[所属员工组编码]),
    'Employee Roles'[员工ID] = CurrentEmpID,
    'Employee Roles'[功能角色] IN {"Primary Supervisor", "Backup Supervisor"},
    RELATED(Groups[组类型]) = "Management"
)
// 获取管辖组内所有普通员工(Worker)的ID
VAR ManagedWorkerIDs = CALCULATETABLE(
    VALUES('Employee Roles'[员工ID]),
    'Employee Roles'[所属员工组编码] IN ManagedGroups,
    'Employee Roles'[功能角色] = "Worker"
)
// 可见范围:用户自身 + 管辖的普通员工
RETURN
Employee[员工ID] = CurrentEmpID || Employee[员工ID] IN ManagedWorkerIDs

注意:如果Groups表和Employee Roles表的关联为非激活状态,需要将RELATED(Groups[组类型]) = "Management"替换为CALCULATE(MAX(Groups[组类型]), USERELATIONSHIP(Groups[组编码], 'Employee Roles'[所属员工组编码])) = "Management"。

3. 规则效果说明

该规则完全匹配你提出的3项权限要求:

  • 主管仅可见自己和所负责Management组内的Worker数据,其他主管的角色不属于Worker,因此不在可见范围内
  • 普通员工(Worker)没有管辖的组,ManagedGroups返回空值,仅可见自身数据,看不到任何主管的信息
  • 所有用户默认包含自身数据的可见权限

4. 验证方法

发布前可以在Power BI Desktop中直接测试:

  • 点击「建模」选项卡 -「以角色身份查看」
  • 选择你创建的RLS角色,输入测试用户的邮箱即可模拟对应权限,无需发布到服务后验证

内容的提问来源于stack exchange,提问作者Sarah B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:06:03