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

如何在Power BI Embedded中配置关联userprincipalname()的多SCHEMECODE RLS?

Power BI Embedded 多值SCHEMECODE的RLS配置方案

核心需求

基于Web应用返回的逗号分隔SCHEMECODE(示例:"16856,39760"),在指定表格上配置行级别安全(RLS),限制用户仅能查看自身权限范围内的SCHEMECODE对应数据,权限值与USERPRINCIPALNAME()关联。

配置步骤

1. 创建RLS角色

  • 打开Power BI Desktop,切换到建模选项卡,点击管理角色。
  • 新建角色(例如命名为SchemeAccess),选中需要配置RLS的目标表格。

2. 编写DAX过滤表达式

在角色的表格过滤规则框中,输入以下DAX代码(根据Power BI版本选择适配方案):

方案一:使用SPLIT函数(适用于较新版本Power BI)

SCHEMECODE IN SELECTCOLUMNS(
    SPLIT(USERPRINCIPALNAME(), ","),
    "AllowedScheme", [Value]
)

方案二:兼容旧版本的PATH系列函数

SCHEMECODE IN SELECTCOLUMNS(
    GENERATESERIES(1, PATHLENGTH(USERPRINCIPALNAME())),
    "AllowedScheme", PATHITEM(USERPRINCIPALNAME(), [Value], TEXT)
)

处理带空格的权限值

如果Web应用返回的字符串包含空格(例如"16856, 39760"),需要添加TRIM函数清理格式:

TRIM(SCHEMECODE) IN SELECTCOLUMNS(
    SPLIT(USERPRINCIPALNAME(), ","),
    "AllowedScheme", TRIM([Value])
)

3. 验证配置

  • 在Power BI Desktop中,点击查看为角色,选择SchemeAccess角色,输入模拟的权限字符串(如"16856,39760"),确认表格仅显示对应SCHEMECODE的数据。
  • 发布到Power BI服务后,确保Web应用在嵌入时将用户的权限字符串正确传递为USERPRINCIPALNAME()的值。

注意事项

  • 确保目标表格的SCHEMECODE列与权限字符串中的值格式一致(如均为文本类型,无格式差异)。
  • 若权限传递逻辑使用CustomData而非USERPRINCIPALNAME(),只需将表达式中的USERPRINCIPALNAME()替换为CUSTOMDATA()即可。

内容的提问来源于stack exchange,提问作者Vinay Kurmi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:55:31