将 Power BI 连接到 Azure Databricks
Microsoft Power BI 是一种业务分析服务,它使用自助式商业智能功能提供交互式可视化效果,使最终用户能够自行创建报表和仪表板,而无需依赖于信息技术人员或数据库管理员。
将 Azure Databricks 作为数据源与 Power BI 配合使用时,可以将 Azure Databricks 的性能和技术优势带给所有业务用户(而不是仅带给数据科学家和数据工程师)。
从 Azure Databricks 发布到 Power BI Online
将 Azure Databricks 用作 Power BI Online 的数据源时,可以直接通过 Databricks UI 从表或架构创建 Power BI 数据集。
要求
数据必须位于 Unity Catalog 中,并且计算(群集)必须启用 Unity Catalog。 目前不支持 Hive 元存储。
必须拥有高级(高级容量或高级每用户许可证)Power BI 许可证。
必须向用于从 Databricks 发布到 Power BI 的已注册 Entra ID 应用 Databricks Dataset Publishing Integration 授予以下权限:
- Content.Create
- Dataset.ReadWrite.All
- Workspace.Read.All
有关详细信息,请参阅 Microsoft Entra 权限。
注意
这些权限通常需要 Entra 管理员同意,尤其是 Power BI 中的工作区和数据集级别访问权限。 有关操作说明,请参阅查看管理员同意请求。
在 Power BI 工作区设置中,必须启用“用户可以在 Power BI 服务中编辑数据模型(预览版)”,以便在发布语义模型后对其进行编辑。 还可以使用表格编辑器编辑语义模型,只需使用 XMLA 终结点建立连接即可。
如需在 Power BI 工作区中启用 XML 写入,请按照此链接中的说明操作。
如果 Power BI 工作区使用专用链接,则必须在 Power BI 中手动更新数据集的数据源凭据。
将 Azure Databricks 表发布到 Power BI 数据集
登录到 Databricks 工作区,然后单击边栏中的 “目录”以打开目录资源管理器。
从右上角的下拉列表中选择一个计算资源。
打开目录,然后选择要发布的架构或表。 请勿从 hive 元存储或示例目录中进行选择。
在右上角,单击架构的“与 BI 工具一起使用”或表的“在仪表板中打开”。
选择“发布到 Power BI 工作区”。
在“连接到合作伙伴”对话框中,单击“连接到 Microsoft Entra ID”进行身份验证。
在“Power BI 工作区”中,选择 Power BI 工作区。
在“数据集模式”下,选择 DirectQuery 或“导入”。
在“Power BI 中的身份验证方法”中,选择“OAuth”或“PAT (个人访问令牌)”。
Databricks 建议使用 OAuth,因为它允许细粒度的访问控制和用户级审核。 可能需要在“数据源凭据”下的 Power BI 数据集设置页上配置 OAuth 凭据。 如果选择个人访问令牌 (PAT),则会代表你创建一个 PAT,以允许 Power BI 访问语义模型。
在“数据集名称”中,选择“发布作为新数据集”或“使用现有数据集”。
选择“使用现有数据集”时,应注意以下几点:
- 如果该数据集存在,则不会将其覆盖。 更新仅在给定架构中追加新记录。
- 如果选定的表不是现有数据集的一部分,则会添加该表。
- 如果该表已在数据集中,并且上次更新后添加了新列,则会自动添加这些列。
- 可以为新表选择不同的存储模型来创建复合语义模型。
如果你有要更新的现有语义模型,同时要保留现有的数据连接,请选择“使用现有数据集”。 如果要使用新的语义模型创建新数据集,请选择“发布为新数据集”。
- 如果该数据集存在,则不会将其覆盖。 更新仅在给定架构中追加新记录。
单击“发布到 Power BI”。
在数据集发布后的 10 到 20 秒内,单击“打开 Power BI”以在新选项卡中打开 Power BI 数据集。
功能和说明
- 发布包含多个表的架构时,将发布包含列的所有表。 不会发布没有列的表。
- Azure Databricks 中表列的备注将复制到 Power BI 中相应列的说明。
- 已发布的数据集中将保留外键关系。 但是,Power BI 在任何两个表之间都仅支持一个活动状态的关系路径。 当 Azure Databricks 中的架构中存在多个路径时,Power BI 中的一些相应关系将设置为非活动状态。 稍后可以在 Power BI 的数据模型视图中更改哪些关系是活动或非活动状态。
- 使用 OAuth 或本地数据网关时,可能需要在 Power BI 数据集设置页面上的“数据源凭据”下配置凭据。
故障排除
错误 | 备注 |
---|---|
首次启动“发布到 Power BI”时,“需要批准” | 如果看到此消息,则需要 Entra 管理员批准,然后才能授予对此集成功能的权限。 请联系 Entra 管理员来批准请求。 请访问此链接获取说明。 |
PowerBINotLicensedException | 确保拥有 Power BI Premium 许可证。 |
我们无法部署此数据集。 请联系容量管理员,确保在 Power BI Premium 容量上的容量设置中启用了 XMLA 读/写支持,然后重试。 有关其他信息,请参阅产品文档中的“XMLA 读/写支持”。 | 请联系 Power BI 容量管理员,以在容量设置中的“XMLA 终结点”下启用“读取和写入”功能。 请访问此链接获取说明。 |
XMLA 终结点功能已禁用。 在 PowerBI.com 中启用“在 Excel 中分析”功能以启用此功能。 | 请联系 Power BI 容量管理员,以在容量设置中的“XMLA 终结点”下启用“读取和写入”功能。 请访问此链接获取说明。 |
CapacityNotActive | 容量可能会暂停。 请联系容量管理员来检查容量状态。 |
名称为“<ccon> ***</ccon> ”的数据库已存在于“<ccon> workspace </ccon> ” *** 中。 |
确保有权创建语义模型。 然后,重试“发布到 Power BI”以发布具有递增版本号的语义模型。 |
不能在同一模型中将 Direct Lake 模式与其他存储模式一起使用。 复合模型不支持 Direct Lake 模式。 删除不支持的表或将其切换到 Direct Lake 模式。 | 由于“发布到 Power BI”会创建具有导入模式或 DirectQuery 模式的语义模型,因此它不能用于发布到使用 Direct Lake 模式的现有数据集。 请单击此链接了解详细信息。 |
'<euii> *</euii> ' 用户没有调用 Discover 方法的权限。 |
确保发布到具有高级许可证模式的 Power BI 工作区。 不能发布到具有 Pro 许可证模式的工作区。 |
'<euii> </euii> ' 用户没有在 '**' 中创建新对象的权限,或者该对象不存在。 |
你可能在 Power BI 工作区中拥有查看者角色。 检查你是否有权创建语义模型。 有关详细信息,请访问此链接。 |
在 Power BI 上编辑数据源凭据时,“无法更新数据源凭据:[Microsoft][ThriftExtension] (14) HTTP 连接期间来自服务器的意外响应:返回了未授权/禁止的错误响应,但未收到令牌过期消息。”在 Power BI 上编辑数据源凭据时 | 检查 Databricks 工作区是否可公开访问。 如果工作区正在使用专用链接或 IP 访问列表,则可能需要配置 Power BI 本地网关。 |
将 Power BI Desktop 连接到 Azure Databricks
可以将 Power BI Desktop 连接到 Azure Databricks 群集和 Databricks SQL 仓库。 还可以将 Power BI 报表发布到 Power BI 服务,让用户能够使用单一登录 (SSO),并传递用于访问报表的相同 Microsoft Entra ID 凭据来访问基础 Azure Databricks 数据。
要求
Power BI Desktop 2.85.681.0 或更高版本。 若要将 Unity Catalog 管理的数据与 Power BI 配合使用,必须使用 Power BI Desktop 2.98.683.0 或更高版本(2021 年 10 月版)。
注意
Power BI Desktop 需要在 Windows 上运行。 对于其他操作系统,替代做法是在物理主机或基于 Windows 的虚拟机上运行 Power BI Desktop,然后从所用的操作系统连接到该主机或虚拟机。
如果使用低于 2.85.681.0 的 Power BI Desktop 版本,则还需要在 Power BI Desktop 所在的同一环境中安装 Databricks ODBC 驱动程序。
Azure Databricks 个人访问令牌或你的 Microsoft Entra ID 帐户凭据。
手动将 Power BI Desktop 连接到 Azure Databricks
根据所选的身份验证方法,按照这些说明使用 Power BI Desktop 连接到群集或 SQL 仓库。 在 DirectQuery 模式下使用 Power BI 时,建议使用 Databricks SQL 仓库。
启动 Power BI Desktop。
单击“获取数据”或“文件”>“获取数据”。
单击“获取数据以开始”。
搜索“Databricks”,然后单击连接器:
- Azure Databricks
单击“连接” 。
输入“服务器主机名”和“HTTP 路径”。
选择你的数据连接模式。 有关“导入”和 DirectQuery 之间的差异的信息,请参阅在 Power BI Desktop 中使用 DirectQuery。
单击“确定”。
单击你的身份验证方法:
- 个人访问令牌:输入你的 Azure Databricks 个人访问令牌。
- Microsoft Entra ID:单击“登录”,然后按照屏幕上的说明操作。
- 用户名/密码:不适用。
单击“连接” 。
从 Power BI 导航器中选择要查询的 Azure Databricks 数据。 如果为工作区启用了 Unity Catalog,请在选择架构和表之前选择一个目录。
使用自定义 SQL 查询
Databricks 连接器提供 Databricks.Query
数据源,使用户能够提供自定义 SQL 查询。
按照使用 Power BI Desktop 进行连接中所述的步骤创建连接,并使用“导入”作为数据连接模式。
在“导航器”中,右键单击最前面的包含所选主机名和 HTTP 路径的项,然后单击“转换数据”打开 Power Query 编辑器。
在函数栏中,将函数名称
Databricks.Catalogs
替换为Databricks.Query
并应用更改。 这会创建一个将 SQL 查询用作参数的 Power Query 函数。在参数字段中输入 SQL 查询,然后单击“调用”。 这会执行该查询并创建一个新表,查询结果为该表的内容。
使用 Power BI 服务访问 Azure Databricks 数据源
将报表发布到 Power BI 服务时,你使用个人访问令牌连接到 Azure Databricks。 在 Power BI 服务中,你还可以启用单一登录 (SSO),以便用户可以通过将其 Microsoft Entra ID 凭据传递给 Azure Databricks 来访问使用 DirectQuery 存储模式生成的报表。
将 Power BI 报表从 Power BI Desktop 发布到 Power BI 服务。
启用对报表和基础数据源的单一登录 (SSO) 访问。
- 在 Power BI 服务中,转到报表的基础 Azure Databricks 数据集,展开“数据源凭据”,然后单击“编辑凭据”。
- 在配置对话框中,选择“报表查看者只能使用直接查询通过其自己的 Power BI 标识访问此数据源”,然后单击“登录”。
选择此选项后,将使用 DirectQuery 处理对数据源的访问,并使用访问报表的用户的 Microsoft Entra ID 标识对其进行管理。 如果未选择此选项,只有你(作为发布报表的用户)才能访问 Azure Databricks 数据源。
自动 HTTP 代理检测
Power BI Desktop 版本 2.104.941.0 及更高版本(2022 年 5 月发布)内置支持检测 Windows 系统范围的 HTTP 代理配置。
Power BI Desktop 可以自动检测和使用 Windows 系统范围的 HTTP 代理配置。
如果代理服务器未提供 CRL 分发点 (CDP),Power BI 可能会显示以下错误消息:
Details: "ODBC: ERROR [HY000] [Microsoft][DriverSupport] (1200)
-The revocation status of the certificate or one of the certificates in the certificate chain is unknown."
若要修复此错误,请完成以下步骤:
如果文件
C:\Program Files\Microsoft Power BI Desktop\bin\ODBC Drivers\Simba Spark ODBC Driver\microsoft.sparkodbc.ini
不存在,请创建该文件。将以下配置添加到
microsoft.sparkodbc.ini
文件中:[Driver] CheckCertRevocation=0
Power BI Delta Sharing 连接器
使用 Power BI Delta Sharing 连接器,用户可以通过 Delta Sharing 开放协议来发现、分析和可视化与他们共享的数据集。 该协议利用 REST 和云存储实现跨产品和平台的数据集安全交换。
有关连接说明,请参阅 Power BI:读取共享数据。
限制
- Azure Databricks 连接器支持 Web 代理。 但是,不支持 .pac 文件中定义的自动代理设置。
- 在 Azure Databricks 连接器中,不支持结合 DirectQuery 模式使用
Databricks.Query
数据源。 - Delta Sharing 连接器加载的数据必须能够装入计算机的内存。 为确保这一点,连接器会将导入的行数限制为前面设置的“行限制”。