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

如何基于用户GUID在Power BI/SQL Server查询中获取Azure AD用户名列表

Azure AD GUID转换为用户名的实现方案

SQL Server端实现(推荐用于Power BI大数据量场景)

SQL Server无内置直接查询Azure AD用户信息的函数,最稳定的实现方式是提前同步Azure AD用户映射表关联查询:

  • 首先将Azure AD全量用户的对象ID(对应ModifiedBy存储的GUID)、显示名、用户主体名(UPN)同步到SQL Server自定义表,例如表名为dbo.AzureADUserMapping,核心字段为UserObjectId(存储GUID)、DisplayName、UserPrincipalName
  • 关联查询语句示例:
SELECT 
    业务表.*,
    ad.DisplayName AS ModifiedByUserName,
    ad.UserPrincipalName AS ModifiedByUPN
FROM 你的业务表名 业务表
LEFT JOIN dbo.AzureADUserMapping ad 
    ON 业务表.ModifiedBy = ad.UserObjectId

该方案查询性能高,无接口调用频率限制,适配Power BI所有刷新模式。

Power BI端实现

如果无法在SQL Server端新增映射表,可直接在Power BI内完成转换:

  • 方案1:Power Query调用Microsoft Graph拉取用户映射表关联
    操作逻辑为在Power Query中拉取Azure AD全量用户数据,和业务表的ModifiedBy字段合并匹配,即可得到对应用户名,M函数示例如下(直接复制到Power Query高级编辑器即可使用,需用有Azure AD用户读取权限的账号做OAuth认证):
let
    拉取AAD用户 = OData.Feed("https://graph.microsoft.com/v1.0/users?$select=id,displayName,userPrincipalName", null, [Implementation="2.0"]),
    保留必要字段 = Table.SelectColumns(拉取AAD用户, {"id", "displayName", "userPrincipalName"}),
    重命名匹配字段 = Table.RenameColumns(保留必要字段, {{"id", "ModifiedBy"}})
in
    重命名匹配字段

将上述查询生成的表和你的业务表做合并查询,匹配ModifiedBy字段后即可提取displayName(用户名)字段。

  • 方案2:如果仅需要识别当前报表查看人的ModifiedBy对应名称,可直接用DAX函数USERPRINCIPALNAME()匹配当前登录用户的UPN,无需拉取全量用户数据。

注意:Power BI端调用Graph拉取用户数据受接口调用频率限制,若用户量超过1万建议优先使用SQL Server端映射表方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:15:04