Power Query 中缺乏对 Microsoft Graph 的支持

不建议或支持从 Power Query 连接到 Microsoft Graph REST API。 相反,建议用户了解基于 Graph 检索分析数据的替代解决方案,例如 Microsoft Graph 数据连接

可能会发现,可以通过 Web.ContentsOData.Feed 函数对 Microsoft Graph API 端点进行某些 REST 调用,但这些方法作为长期解决方案并不可靠。

本文概述了 Power Query 中与 Microsoft Graph 连接相关的问题,并解释了为何不建议这样做。

身份验证

Power Query Web.ContentsOData.Feed 函数的内置组织帐户身份验证流与大多数 Graph 端点不兼容。 具体而言,Power Query 的 Microsoft Entra ID 客户端请求 user_impersonation 范围,该范围与 Graph 安全模型不兼容。 Graph 使用一组丰富的权限,这些权限无法通过通用 Web 和 OData 连接器提供。

出于安全原因,不建议直接从查询或使用硬编码或嵌入式凭据,实现自己的 Microsoft Entra ID 凭据检索流。

OData 库不兼容

某些 Graph 端点和 Graph 扩展可能需要使用 Power Query 内置 OData.Feed 函数不支持的 OData 库和功能,因为 Graph 和 Power Query 可能使用的是两个不同的 OData 库版本。 这些问题通常会导致检索服务 $metadata 文档时出错。 可能会发现与将 Implementation = "2.0" 选项传递给 OData.Feed 函数调用相关的常见指南,以确保使用最新的受支持的 OData 库。 虽然此方法确实解决了某些 OData 不兼容问题,但随着 Graph 和 Power Query 在不同时间采用新版本的 OData 库,仍可能会遇到错误。

性能

Microsoft Graph API 旨在支持许多应用程序场景,但对于大多数分析场景所需的大规模数据检索来说并不理想。 如果尝试从 Graph API 检索大量数据,可能会遇到性能问题。 有关场景适用性的详细信息,请参阅 Graph 文档

使用自定义连接器

有些 Power Query 用户通过自定义连接器启用了 Graph 连接,将其功能限制为 Graph API 的某些部分。 此方法允许连接器开发人员通过定义自己的具有 Graph 特定权限的 Microsoft Entra ID 客户端来解决常规身份验证问题。 某些自定义连接器通过使用 Web.Contents 和模拟其连接器逻辑中的 OData 支持来应对 OData 挑战。 但是,不建议使用此方法,因为用户经常遇到上述性能和可伸缩性问题。 采用此路由的开发人员应考虑这些限制。