上个月,一家快消企业IT部门做了一套全国销售看板,把报表链接发给各区域负责人。
华东区总打开后一眼就看到华南数据排在前面,截图发到管理群里问"华南这个月超过我们了?"
华南区总回了一句:"你怎么会看到我们的数据?"
群里一下安静了。
如果华东区总看到的只是销售额,问题还不算严重。但如果他还能看到华南大客户名单、价格政策、折扣和毛利明细,那就不是“发错链接”这么简单了。
后来,IT重新配置了Power BI的行级安全性,也就是RLS。 配置完成后:
· 华东区总只能看到华东数据
· 华南区总只能看到华南数据
· 城市经理只能看到自己负责的城市
· 全国负责人可以看到全部数据
· 所有人使用的仍然是同一份报表
这正是RLS最核心的价值: 同一份报表,不同的人打开,只能看到自己有权限查看的数据。
假设一张销售明细表中有5000条记录。华东区总打开后只显示华东的1200条,华南区总只能看到华南的800条,全国销售负责人可以看到全部5000条。
这些用户进入的是同一份报表。区别不是页面不同,而是底层数据已经根据当前用户身份完成过滤。
RLS让企业可以做到:一套模型、一份报表、一套指标,根据不同用户展示不同的数据范围。
假设企业已经有一张销售明细表 Sales:

还需要准备一张用户权限映射表 UserSecurity:

这张表实际上回答了两个问题:
· 当前登录用户是谁
· 这个用户可以访问哪个区域
实际项目中,权限表不一定需要手工维护在Power BI中,也可以来自:
员工主数据、销售组织架构、CRM客户归属、经销商权限表、ERP岗位与组织关系
关键是权限关系必须清晰:谁,可以看什么。
提示:邮箱地址建议统一转换为小写,并确保与用户登录Power BI时使用的账号一致,避免因为格式差异导致匹配失败。
更规范的做法是在用户权限表和销售明细表之间增加一张区域维度表:
UserSecurity→Region→Sales
其中:
· UserSecurity 记录用户与区域的对应关系
· Region 保存统一的区域主数据
· Sales 保存销售业务数据
这样设计的好处是,未来即使企业增加库存、预算、费用、应收等数据,也可以共用同一套区域权限。
例如:
text
┌→ Sales
UserSecurity → Region → Inventory
├→ Budget
└→ Receivables
用户登录后,区域权限不仅过滤销售数据,也可以同步过滤库存、预算和应收数据。
企业真正需要控制的,往往不是一张报表, 而是一整套经营数据。
在Power BI Desktop中进入:建模→管理角色→新建角色"。
角色可以命名为:RegionalAccess
在用户权限表上配置规则:LOWER(UserSecurity[Email]) = LOWER(USERPRINCIPALNAME())。
USERPRINCIPALNAME()会返回当前登录用户的账号。
当张三登录时,系统会匹配他的邮箱,再从权限表中找到“华东”,最终只显示华东区域的数据。 这种方式叫动态RLS。 它与静态RLS最大的区别在于,权限不直接写死在DAX中。
静态RLS可能会写成:Sales[Region] = "华东“
这意味着每个区域都要创建一个角色。未来增加区域或更换负责人时,可能还要重新修改模型。
动态RLS把权限放在映射表中。新增员工、调整岗位或增加区域时, 只需要更新权限数据,不必为每个人重新编写规则。
RLS配置完成后,不要立即发布。先通过 "以身份查看" 模拟不同用户账号逐一验证:
全国负责人、区域负责人、城市经理、普通销售人员、未配置权限的用户、同时负责多个区域的用户。
很多权限问题出现在特殊场景,而是出现在特殊角色上,如:
· 一个人同时负责两个区域怎么办?
· 员工调岗后旧权限是否撤销?
· 新员工没有权限记录时应该看到什么?
· 全国负责人如何查看全部区域
· 外部合作伙伴能否看到成本和利润
基本原则:没有明确授权的数据,默认不显示。
实际组织中一个用户不一定只负责一个区域。例如,全国负责人要看全国,大区负责人可能管理多个省份,销售经理也可能同时负责两个区域。 更稳妥的方式,是建立明确的“用户—可访问区域”映射:

一个用户可以对应多行权限。
这种方式比在区域列中写一个虚拟值 ALL 更清晰,也更容易审计。 如果组织层级更复杂,还可以进一步建立:
集团、事业部 、大区 、省区、 城市、 门店
复杂RLS的本质并不是写一条DAX表达式, 而是在设计企业的数据授权体系。
1. 设置RLS后用户什么都看不到。
最常见原因是账号匹配失败例如,Power BI识别到的是:zhangsan@company.com
但权限表中保存的是: ZhangSan@company.com
或者权限表中使用姓名、员工编号,而RLS规则使用邮箱账号。
建议统一处理:
· 去去除前后空格
· 邮箱全部转换为小写
· 确认权限表与登录账号一致
· 检查用户是否存在于权限表
权限匹配失败时,正确结果应该是看不到数据,而不是默认显示全部。
2. Desktop测试正常,发布后结果不对。
还需要检查:
· 用户是否加入了正确的RLS角色
· 权限表是否已经刷新
· 用户在工作区中是什么角色
· 用户是否通过其他方式获得了更高权限
不能只在Desktop里测试,还要在真实发布环境中验证。
3. 每个区域做一份报表。
很多企业没有使用RLS,而是复制多份文件:
销售分析_华东.pbix
销售分析_华南.pbix
销售分析_华北.pbix
刚开始只有三个区域时,看起来问题不大。 但区域和报表一多,很快就会出现:
· 口径不一致
· 页面更新不同步
· 报表版本混乱
· 用户找不到正式版本
· IT不知道哪些报表还在使用
这时,问题已经不只是权限配置, 而是整个BI资产开始失去管理。
配置好RLS后,同一份报表可以让不同用户看到不同数据。
但随着Power BI在企业内不断扩展,新问题也会出现:员工到底应该去哪里找报表?
有些报表放在Power BI工作区,有些通过邮件发链接,有些收藏在浏览器里,还有些散落在企业微信、钉钉和飞书群中。
用户可能收到几十个链接,却不知道:
· 哪一份是正式版本
· 哪一份适合自己
· 哪一份已经停止维护
· 调岗后原来的权限是否还保留
· 新报表发布后从哪里进入
对IT来说,问题也会从“如何配置一份报表的RLS”,逐渐升级为: 如何统一管理整个企业的报表、用户、权限和访问入口。 这正是悦策科技PowerOpp企业数据门户所解决的问题。
PowerOpp不是替代Power BI的RLS,它是在Power BI数据权限基础上,增加一层企业级报表门户和BI资产管理能力。 企业可以形成两层权限体系。
第一层:报表访问权限
由PowerOpp控制:
· 用户可以看到哪些报表目录
· 用户可以打开哪些报表
· 哪些报表发布给哪些部门
· 用户调岗或离职后如何统一撤权
· 不同岗位看到什么样的门户首页
第二层:报表内部数据权限
由Power BI RLS控制:
· 用户进入报表后能看到哪个区域
· 可以看到哪些门店、客户和部门
· 能否查看全国数据
· 能否查看成本、利润等敏感指标
例如,同一份全国销售分析报表发布到PowerOpp后:

企业不再依靠到处转发链接管理报表,而是通过统一的数据门户提供正式入口。
使用PowerOpp后,企业可以将不同业务主题统一组织起来:
管理驾驶舱
集团经营分析 、收入与利润分析、 预算执行 、现金流与应收风险
销售管理
全国销售分析、 区域业绩分析 、客户与产品分析、 销售预测
生产制造
生产运营分析 、OEE分析 、质量分析 、设备停机分析
财务管理
利润分析 、费用分析、 应收账款分析 、资金分析
用户登录PowerOpp后,只会看到与自己岗位和权限相关的报表。
RLS继续确保,不同区域负责人即使打开同一份报表,看到的数据范围仍然不同。 PowerOpp还可以作为企业统一的数据访问入口,让报表不再散落在邮件、群消息和浏览器收藏夹中。
回到文章开头。华东区总为什么会看到华南的数据?直接原因可能是RLS没有配置正确。
但继续往下看,背后往往还存在更多问题:
· 报表依靠链接到处分发
· 权限缺少统一管理
· 不同报表有不同入口
· 员工不知道哪一份是正式版本
· 调岗和离职后的权限没有及时回收
· IT难以管理不断增加的BI资产
因此,一个成熟的数据访问体系,需要同时回答三个问题:
用户可以进入哪些报表?
通过PowerOpp统一管理报表发布和访问权限。
用户进入报表后可以看到哪些数据?
通过Power BI RLS控制区域、组织、客户和岗位的数据边界。
用户如何方便地找到并使用报表?
通过统一企业数据门户提供正式入口。
三者结合后,企业才能真正做到: 一个统一入口、一套报表资产、一套身份体系,不同岗位看到不同的数据。
Power BI RLS解决的是: 同一份报表,不同的人看到不同的数据。
悦策科技PowerOpp企业数据门户进一步解决的是: 企业员工从统一入口访问正确的报表,并在既定权限范围内使用数据。
当企业只有几份报表时,发送链接或许还能应付。 但当报表开始覆盖不同部门、区域、岗位和外部合作伙伴后,企业需要的就不再是更多Power BI链接。而是一套统一、安全、可管理的企业数据门户。