PowerBI多用户访问同一公司数据时RLS配置失效问题求解
解决方案
第一步:调整表间关系类型
- 把DimUsers和DimCompany原来的一对一关系改为一对多关系:DimCompany为一端,DimUsers为多端,关联字段保持原有公司唯一标识字段不变
- 将关系的跨筛选器方向设置为「双向」,确保DimUsers的筛选条件可以正常传递到DimCompany表
第二步:验证RLS规则配置
原有DimUsers表的RLS规则无需修改,保持[Email] = USERPRINCIPALNAME()即可。该规则会自动筛选出当前登录用户对应的DimUsers记录,通过一对多关系传递筛选到关联的DimCompany,再由DimCompany过滤FactSales等所有关联的事实表数据。
第三步:可选扩展适配(应对后续单用户多公司归属需求)
如果后续需要支持单个用户同时查看多家公司的数据,仅需要调整DimUsers表结构,保留Email、CompanyID两个核心字段即可,同一个邮箱可以对应多条不同CompanyID的记录,现有RLS规则无需修改即可自动适配场景。
第四步:生效验证
- 在PowerBI Desktop的「建模」选项卡选择「查看为」,输入不同的用户邮箱,验证对应公司的数据是否正常显示,无权限的跨公司数据是否被正常过滤
- 发布到PowerBI服务后,再次用不同权限的账号测试RLS生效情况
注意:调整关系后需保证DimCompany表的主键唯一性,即每个CompanyID仅存在一条记录,否则会引发关系计数异常导致RLS逻辑错误。
内容的提问来源于stack exchange,提问作者BrNyh
相关产品推荐
相关产品推荐

