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

Power BI Embedded(App Owns Data)Azure AS实时连接RLS实现及CustomData()咨询

当然可以!用CustomData()函数完全能实现你要的这种基于用户上下文的RLS数据筛选,我来给你一步步拆解实现流程:

实现指导:用CustomData()在Azure AS中实现RLS(Power BI Embedded App Owns Data场景)

首先明确:你完全可以通过CustomData()函数读取传递到Azure AS的安全上下文值,进而实现RLS数据筛选,这是这类场景下非常常用的方案。下面是具体的实现步骤:

1. 在Azure Analysis Service中配置RLS角色

打开SQL Server Management Studio(SSMS)连接到你的Azure AS实例,右键模型 -> 角色 -> 新建角色:

  • 给角色命名(比如UserContextFilterRole),设置权限为“读取”
  • 切换到行筛选器标签,针对需要限制的表编写筛选规则:
    • 如果只传单个值(比如customer_id),直接写:
      Customer[CustomerID] = CustomData()
      
    • 如果需要传递多个值(比如customer_id和service_id),先把值用分隔符(比如|)拼接成字符串传递,然后用DAX函数拆分:
      Customer[CustomerID] = PATHITEM(CustomData(), 1) && Service[ServiceID] = PATHITEM(CustomData(), 2)
      

    提示:如果字段是数字类型,记得用VALUE()转换,比如Customer[CustomerID] = VALUE(PATHITEM(CustomData(), 1))

2. 在Power BI Embedded代码中传递CustomData值

在你的App Owns Data应用中,生成嵌入令牌时,需要把用户的安全上下文值传递给CustomData属性:

  • 如果你用.NET SDK:
    var embedConfig = new EmbedConfig
    {
        // 其他配置项...
        CustomData = $"{customerId}|{serviceId}" // 拼接你的上下文值
    };
    // 生成嵌入令牌时包含这个CustomData
    var tokenRequest = new GenerateTokenRequestV2(
        datasets: new List<GenerateTokenRequestDataset> { new GenerateTokenRequestDataset { Id = datasetId } },
        customData: embedConfig.CustomData
    );
    
  • 如果你用REST API:
    在GenerateToken请求的body里加入customData字段:
    {
        "datasets": [{"id": "your-dataset-id"}],
        "customData": "customer123|service456"
    }
    

3. 验证RLS效果

  • 在AS端测试:在SSMS中右键你的角色 -> 测试角色,在弹出的窗口中设置CustomData为你要测试的值,点击确定后查看表数据,确认筛选是否生效。
  • 在应用端测试:模拟不同用户登录,传递不同的customer_id/service_id,查看嵌入的Power BI报表是否只显示对应权限的数据。

注意事项

  • 确保Power BI Embedded的服务主体(或嵌入身份)拥有Azure AS实例的“读取”权限,并且被添加到你创建的RLS角色中。
  • CustomData是字符串类型,传递时要注意值的格式,避免分隔符冲突(如果值本身包含分隔符,建议用更特殊的符号比如|||或者URL编码)。
  • 若需要更复杂的上下文传递,也可以考虑使用UserName()函数,但CustomData在多参数场景下更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:26:17