将 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 许可证。
  • 必须在工作区设置和数据模型设置下启用“用户可以在 Power BI 服务中编辑数据模型(预览版)”,以便在发布后编辑语义模型。 还可以使用表格编辑器编辑语义模型,只需使用 XMLA 终结点建立连接即可。
  • 如需在 Power BI 工作区中启用 XML 写入,请按照此链接中的说明操作。
  • 如果工作区位于专用链接下,则需要在 Power BI 中手动更新数据集的数据源凭据。

如何使用

将 Azure Databricks 表发布到 Power BI 数据集

  1. 登录到 Databricks 工作区并导航到目录资源管理器。 选择要发布的架构/表。 请勿从 hive 元存储或示例目录中进行选择。
  2. 从计算下拉列表中,选择要在此 Power BI 发布中使用的数据仓库。
  3. 在目录资源管理器中打开所需的表/架构后,单击右上角的“使用 BI 工具”按钮。
  4. 在打开的下拉列表中,单击“发布到 Power BI 工作区”选项。

此时,将在窗口右侧打开一个菜单。 按照菜单给出的提示操作,如下所示:

  1. 单击“连接到 Microsoft Entra ID”,使用 Microsoft 帐户进行身份验证。
  2. 在下面的菜单中,选择要发布到“Power BI 工作区”下拉列表中所需的工作区。 在“数据集模式”下拉列表中,选择 DirectQuery(默认选择)或导入模式。
  3. 单击菜单底部的蓝色“发布到 Power BI”按钮。
  4. 等待数据集发布。 这通常需要大约 10 到 20 秒。
  5. 发布数据集后,蓝色按钮将显示一个标记为“打开 Power BI”的链接。 单击此链接可在新选项卡中打开新 Power BI 数据集。

功能和说明

  • 发布包含多个表的架构时,将发布包含列的所有表。 如果任何表中都没有列,则不会执行发布。
  • Databricks 中表列的备注将复制到 Power BI 中相应列的说明。
  • 已发布的数据集中将保留外键关系。 但是,Power BI 在任何两个表之间都仅支持一个活动状态的关系路径。 因此,当 Databricks 中的架构中存在多个路径时,Power BI 中的一些相应关系将设置为非活动状态。 你稍后可以在 Power BI 的数据模型视图中更改哪些关系是活动/非活动状态。
  • 将代表你创建个人访问令牌 (PAT),以允许 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>”用户没有在“”中创建新对象的权限,或者该对象不存在。 你可能在 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 帐户凭据。

    注意

    使用个人访问令牌进行身份验证时,Databricks 建议使用属于服务主体而不是工作区用户的个人访问令牌,这是一种安全最佳做法。 若要为服务主体创建令牌,请参阅管理服务主体的令牌

  • 一个 Azure Databricks 群集 或 Databricks SQL 仓库

手动将 Power BI Desktop 连接到 Azure Databricks

根据所选的身份验证方法,按照这些说明使用 Power BI Desktop 连接到群集或 SQL 仓库。 在 DirectQuery 模式下使用 Power BI 时,建议使用 Databricks SQL 仓库。

  1. 获取服务器主机名和 HTTP 路径

  2. 启动 Power BI Desktop。

  3. 单击“获取数据”或“文件”>“获取数据”。

  4. 单击“获取数据以开始”。

  5. 搜索“Databricks”,然后单击连接器:

    • Azure Databricks
  6. 单击“连接” 。

  7. 输入“服务器主机名”和“HTTP 路径”。

  8. 选择你的数据连接模式。 有关“导入”和 DirectQuery 之间的差异的信息,请参阅在 Power BI Desktop 中使用 DirectQuery

  9. 单击“确定”。

  10. 单击你的身份验证方法:

    • 个人访问令牌:输入你的 Azure Databricks 个人访问令牌。
    • Microsoft Entra ID:单击“登录”,然后按照屏幕上的说明操作。
    • 用户名/密码:不适用。
  11. 单击“连接” 。

  12. 从 Power BI 导航器中选择要查询的 Azure Databricks 数据。 如果为工作区启用了 Unity Catalog,请在选择架构和表之前选择一个目录。

    Power BI Navigator

使用自定义 SQL 查询

Databricks 连接器提供 Databricks.Query 数据源,使用户能够提供自定义 SQL 查询。

  1. 按照使用 Power BI Desktop 进行连接中所述的步骤创建连接,并使用“导入”作为数据连接模式。

  2. 在“导航器”中,右键单击最前面的包含所选主机名和 HTTP 路径的项,然后单击“转换数据”打开 Power Query 编辑器。

    单击“导航器”中的“转换数据”

  3. 在函数栏中,将函数名称 Databricks.Catalogs 替换为 Databricks.Query 并应用更改。 这会创建一个将 SQL 查询用作参数的 Power Query 函数。

  4. 在参数字段中输入所需的 SQL 查询,然后单击“调用”。 这会执行该查询并创建一个新表,查询结果为该表的内容。

使用 Power BI 服务访问 Azure Databricks 数据源

将报表发布到 Power BI 服务时,你使用个人访问令牌连接到 Azure Databricks。 在 Power BI 服务中,你还可以启用单一登录 (SSO),以便用户可以通过将其 Microsoft Entra ID 凭据传递给 Azure Databricks 来访问使用 DirectQuery 存储模式生成的报表。

  1. 将 Power BI 报表从 Power BI Desktop 发布到 Power BI 服务。

  2. 启用对报表和基础数据源的单一登录 (SSO) 访问。

    1. 在 Power BI 服务中,转到报表的基础 Azure Databricks 数据集,展开“数据源凭据”,然后单击“编辑凭据”。
    2. 在配置对话框中,选择“报表查看者只能使用直接查询通过其自己的 Power BI 标识访问此数据源”,然后单击“登录”。

    为 Databricks 数据访问启用 SSO

    选择此选项后,将使用 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."

若要修复此错误,请完成以下步骤:

  1. 如果文件 C:\Program Files\Microsoft Power BI Desktop\bin\ODBC Drivers\Simba Spark ODBC Driver\microsoft.sparkodbc.ini 不存在,请创建该文件。

  2. 将以下配置添加到 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 连接器加载的数据必须能够装入计算机的内存。 为确保这一点,连接器会将导入的行数限制为前面设置的“行限制”。

其他资源

支持