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

如何将自定义应用用户关联至Power BI服务并传递用户数据?

解决方案:自定义应用用户与Power BI/Power Automate关联实现

一、正确传递用户标识到Power BI(修复EffectiveIdentity报错)

你之前的代码报错核心原因是EffectiveIdentity必须关联目标数据集——RLS身份绑定在数据集层面,不指定数据集会导致Power BI无法识别身份作用范围。修改后的代码如下:

// 构造有效身份,直接传入自定义应用的userId,关联对应数据集
var rlsIdentity = new EffectiveIdentity(
    username: userId,
    datasets: new List<string> { "你的目标数据集ID" } // 必填:关联仪表盘依赖的数据集ID
);

// 生成嵌入令牌
var generateTokenRequestParameters = new GenerateTokenRequest(
    identities: new List<EffectiveIdentity> { rlsIdentity },
    accessLevel: "view"
);

var tokenResponse = await _client.Dashboards.GenerateTokenInGroupAsync(
    workSpaceID, 
    dashboard.Id, 
    generateTokenRequestParameters, 
    cancellationToken
);

关键注意事项:

  • 无需额外定义RLS角色:如果只是传递用户标识而非过滤数据,不需要在Power BI数据集中创建RLS规则,只需传入EffectiveIdentity即可保留身份信息。
  • 避免格式冗余:直接使用原始userId作为username值,不要添加userId:前缀,防止USERPRINCIPALNAME()获取值时出现格式问题。

二、在Power BI中获取用户标识

在Power BI报表/仪表盘里,使用DAX函数USERPRINCIPALNAME()即可获取你传入的userId值:

  • 可在卡片可视化中直接显示该值
  • 在按钮、交互动作中可将其作为参数传递

三、同步用户标识到Power Automate Flow

方式1:Power BI按钮触发流时传递参数

  1. 在Power BI中添加“按钮”可视化
  2. 配置按钮动作为“触发流”,选择目标Power Automate流
  3. 在流的输入参数设置中,新增参数(如AppUserId),值设置为USERPRINCIPALNAME()
  4. 流中即可通过该参数获取自定义应用的用户ID,再推送至Amazon SQS队列

方式2:可视化交互触发流传递参数

对于图表、切片器等交互元素,可在“操作”设置中配置“触发流”,并将USERPRINCIPALNAME()作为参数传入流中,实现交互事件与用户身份的绑定。

四、权限验证

确保你的Service Principal具备以下权限:

  • 目标工作区的“成员”或以上权限
  • 目标数据集的“读取”或以上权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:47:19