将 Tableau 连接到 Azure Databricks

本文介绍如何将 Azure Databricks 连接到 Tableau Desktop,并包含有关其他 Tableau 版本的信息。

将 Azure Databricks 作为数据源与 Tableau 配合使用时,你可以提供强大的交互式分析功能,通过将数据集扩展为巨大的数据集,使业务分析师受益于数据科学家和数据工程师的贡献。

若要详细了解如何使用 Tableau Desktop 生成报表和可视化效果,请阅读教程:Tableau Desktop 入门

要求

手动连接到 Tableau Desktop

按照这些说明,将群集或 SQL 仓库与 Tableau Desktop 连接。

  1. 启动 Tableau Desktop。

  2. 单击“文件”>“新建”。

  3. 在“数据”选项卡上,单击“连接数据”。

  4. 在连接器列表中,单击“Databricks”。

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

  6. 对于“身份验证”,选择你的身份验证方法并输入身份验证凭据,然后单击“登录”。

    • 若要使用 Microsoft Entra ID 令牌,请选择“个人访问令牌”,然后为“密码”输入你的 Microsoft Entra ID 令牌作。

    • 若要使用 Azure Databricks 个人访问令牌,请选择“个人访问令牌”,并输入你的个人访问令牌作为“密码”。

    • 若要使用 Microsoft Entra ID 凭据,请选择“Microsoft Entra ID”。

      对于 Tableau Desktop 2021.1 及更高版本:

      • 如果你不使用 Microsoft Entra ID(以前称为 Azure Active Directory) B2B 来宾帐户或由世纪互联运营的 Azure 上的 Azure Databricks,则只需输入 https://login.chinacloudapi.cn/common 作为 OAuth 终结点

        配置身份验证

        • 如果使用 Microsoft Entra ID B2B 来宾帐户或由世纪互联运营的 Azure 上的 Azure Databricks,请与管理员联系以获取专用 Microsoft Entra ID 仓库

      注意

      如果你不是管理员,系统将会显示“需要管理员批准”错误。 请求全局管理员、云应用程序管理员或应用程序管理员授予连接到 Tableau 的权限,然后尝试重新登录。

      如果 Microsoft Entra ID 帐户启用了管理员同意工作流,Tableau 桌面会提示你请求 Tableau 的访问权限。 在全局管理员、云应用管理员或应用程序管理员批准请求后,尝试重新登录。

    如果为工作区启用了 Unity 目录,请另外设置默认目录。 在“高级”选项卡中,为“连接属性”添加 Catalog=<catalog-name>。 要更改默认目录,请在“初始 SQL”选项卡中输入 USE CATALOG <catalog-name>

成功与 Tableau Desktop 连接后,可以在此处停止。 本文中的剩余信息介绍了有关 Tableau 的其他信息,例如在 Linux 上设置 Tableau Server、如何使用 Tableau Online 以及 Tableau 的最佳做法和故障排除。

Linux 上的 Tableau Server

编辑 /etc/odbcinst.ini,使之包括以下内容:

[Simba Spark ODBC Driver 64-bit]
Description=Simba Spark ODBC Driver (64-bit)
Driver=/opt/simba/spark/lib/64/libsparkodbc_sb64.so

注意

Linux 上的 Tableau Server 建议使用 64 位处理体系结构。

在 Tableau Online 上发布并刷新工作簿

本文演示如何将工作簿从 Tableau Desktop 发布到 Tableau Online,以及如何在数据源更改时使其保持更新。 你需要 Tableau Desktop 中的工作簿Tableau Online 帐户。

  1. 从 Tableau Desktop 提取工作簿的数据:在 Tableau Desktop 中,显示要发布的工作簿后,单击“数据 >”<data-source-name>“> 提取数据”。
  2. 在“提取数据”对话框中,单击“提取” 。
  3. 浏览到本地计算机上要保存提取的数据的位置,然后单击“保存”。
  4. 将工作簿的数据源发布到 Tableau Online:在 Tableau Desktop 中,单击“服务器”>“发布数据源 >”<data-source-name>
  5. 如果显示“Tableau Server 登录”对话框,请单击“Tableau Online”链接,然后按照屏幕上的说明登录到 Tableau Online 。
  6. 在“将数据源发布到 Tableau Online”对话框中,单击“未启用刷新”旁边的“编辑”链接 。
  7. 在显示的浮出控件内,将“身份验证”从“未启用刷新”更改为“允许刷新访问” 。
  8. 单击此浮出控件之外的任意位置可将其隐藏。
  9. 选择“更新工作簿以使用已发布数据源”。
  10. 单击“发布” 。 Tableau Online 中会显示数据源。
  11. 在 Tableau Online 的“发布完成”对话框中,单击“计划”,然后按照屏幕上的说明操作 。
  12. 将工作簿发布到 Tableau Online:在 Tableau Desktop 中(其中显示了要发布的工作簿),单击“服务器”“发布工作簿”。
  13. 在“将工作簿发布到 Tableau Online”对话框中,单击“发布” 。 Tableau Online 中会显示工作簿。

Tableau Online 根据你设置的计划检查对数据源的更改,如果检测到更改,则更新已发布的工作簿。

有关详细信息,请参阅 Tableau 网站上的以下内容:

最佳做法和故障排除

用于优化 Tableau 查询的两个基本操作是:

  • 减少在单个图表或仪表板中要查询和可视化的记录数。
  • 减少在单个图表或仪表板中要由 Tableau 发送的查询数。

确定先尝试哪一个取决于你的仪表板。 如果有很多用于单个用户的不同图表全都在同一个仪表板中,则可能是 Tableau 向 Azure Databricks 发送了过多的查询。 如果只有几个图表,但它们需要很长时间才能加载,则 可能是 Azure Databricks 返回太多记录,导致无法高效地进行加载。

在 Tableau Desktop 和 Tableau Server 上均可使用的 Tableau 性能记录可以用来在你运行特定工作流或仪表板时识别导致延迟的进程,帮助你了解性能瓶颈的位置。

启用性能记录以调试任何 Tableau 问题

例如,如果查询执行存在问题,则你知道它与数据引擎进程有关或者与正在查询的数据源有关。 如果视觉对象布局的执行速度缓慢,则你知道 VizQL 是问题所在。

如果性能记录表明延迟发生在执行查询的过程中,则可能是 Azure Databricks 返回结果花费了太长时间,或者是 ODBC/连接器覆盖在将数据处理成适用于 VizQL 的 SQL 时花费了太长时间。 出现这种情况时,应分析返回的内容,并尝试更改分析模式,使每个组、段或项目都有一个仪表板,而不是尝试将所有内容都塞到一个仪表板中并依赖于快速筛选器。

如果是排序或视觉对象布局导致性能不佳,则问题可能出在仪表板尝试返回的标记数。 Azure Databricks 可以快速返回 1 百万条记录,但 Tableau 可能无法计算布局并对结果排序。 如果这是一个问题,请聚合查询并深化到更低的级别。 你还可以尝试更大的计算机,因为 Tableau 仅受运行它的计算机上的物理资源的限制。

有关性能记录器的深入教程,请参阅创建性能记录

Tableau Server 与 Tableau Desktop 的性能对比

一般来说,在 Tableau Desktop 上运行的工作流在 Tableau Server 上并不会更快。 不能在 Tableau Desktop 上执行的仪表板也不会在 Tableau Server 上执行。 这一点需牢记在心。

事实上,在 Desktop 上工作是一种好得多的故障排除方法,因为在进行故障排除时 Tableau Server 有更多需要考虑的进程。 如果事务可以在 Tableau Desktop 中工作,但不能在 Tableau Server 中工作,则可以安全地将问题范围缩小到那些在 Tableau Server 中而不在 Tableau Desktop 中的进程。

配置

默认情况下,连接 URL 中的参数会替代 Simba ODBC DSN 中的参数。 可以通过两种方式自定义 Tableau 中的 ODBC 配置:

  • 单个数据源的 .tds 文件:

    1. 按照保存数据源中的说明导出数据源的 .tds 文件。
    1. 查找 .tds 文件中的属性行 odbc-connect-string-extras='' 并设置参数。 例如,若要启用 AutoReconnectUseNativeQuery,可以将行更改为 odbc-connect-string-extras='AutoReconnect=1,UseNativeQuery=1'
    2. 通过对此连接进行重新连接,重新加载 .tds 文件。

    计算资源经过优化,可使用较少的堆内存来收集大型结果,因此与 Simba ODBC 的默认值相比,它可以为每个提取块处理更多行。 将 RowsFetchedPerBlock=100000' 追加到 odbc-connect-string-extras 属性的值。

  • 所有数据源的 .tdc 文件:

    1. 如果从未创建过 .tdc 文件,则可将 .tdc 添加到文件夹 Document/My Tableau Repository/Datasources
    2. 将此文件添加到所有开发人员的 Tableau Desktop 安装,以便在共享仪表板时此文件可以发挥作用。

优化图表(工作表)

可以通过很多战术性图表优化来提高 Tableau 工作表的性能。

对于不经常更改且不应与之交互的筛选器,请使用上下文筛选器,这会缩短执行时间。 根据经验,另一种好的做法是在查询中使用 if/else 语句而非 case/when 语句。

Tableau 可以将筛选器向下推送到数据源中,这可以显著提高查询速度。 请参阅使用参数跨多个数据源进行筛选跨多个数据源筛选数据,详细了解数据源向下推送筛选器。

最好是尽可能避免表计算,因为表计算需要扫描完整数据集。 有关表计算的详细信息,请参阅通过表计算转换值

优化仪表板

下面是一些提示和故障排除练习,你可以应用这些练习来改善 Tableau 仪表板的性能。

连接到 Azure Databricks 的 Tableau 仪表板的常见问题来源是,在各个仪表板上使用了快速筛选器为许多不同的用户、函数或段提供服务。 可以将全局快速筛选器附加到仪表板上的所有图表。 这是一项很好的功能,但它引发问题的速度也很快。 如果一个仪表板有五个图表和一个全局快速筛选器,则会导致至少 10 个查询发送到 Azure Databricks。 添加更多筛选器后,此数字可能会螺旋式上升,导致巨大的性能问题,因为 Spark 不适合处理多个同一时刻开始的并发查询。 如果使用的 Azure Databricks 群集或 SQL 仓库不够大,无法处理大量查询,则问题会更严重。

建议你首先使用 Tableau 性能记录来排查问题原因。

如果是排序或视觉对象布局导致性能不佳,则问题可能出在仪表板尝试返回的标记数。 Azure Databricks 可以快速返回 1 百万条记录,但 Tableau 可能无法计算布局并对结果排序。 如果这是一个问题,请聚合查询并深化到更低的级别。 你还可以尝试更大的计算机,因为 Tableau 仅受运行它的计算机上的物理资源的限制。

若要了解 Tableau 中的向下钻取,请参阅向下钻取详细信息

通常情况下,如果看到很多粒度标记,则表明分析模式不太好,因为它不提供见解。 从更高的聚合级别向下钻取会更有意义,可减少需要处理和可视化的记录数。

使用操作来优化仪表板

若要从组钻取到段再钻取到项目以获取与进行详尽分析的仪表板相同的分析和信息,可以使用 Tableau 操作。 操作时可以单击一个标记(例如,地图上的状态),将其发送到另一个仪表板,该仪表板会根据你单击的状态进行筛选。 这可以减少在一个仪表板上使用多个筛选器的需求,以及减少需要生成的记录数,因为你可以设置一个操作,使其在获取用作筛选标准的谓词之前不会生成记录。

有关详细信息,请参阅操作提高仪表板性能的 6 大诀窍

缓存

缓存数据是提高工作表或仪表板性能的好办法。

Tableau 中的缓存

Tableau 在返回到数据之前有四层缓存,无论该数据是在实时连接中还是在提取中:

  • 磁贴:如果有人在加载完全相同的仪表板,不进行任何更改,则 Tableau 会尝试对图表重复使用相同的磁贴。 这类似于 Google Maps 磁贴。
  • 模型:无法使用磁贴时,可以通过数学计算生成可视化效果。 Tableau Server 会尝试使用相同的模型。
  • 抽象:查询的聚合结果也会进行存储。 这是第三个“防御”级别。 如果以前的某个查询返回 Sum(Sales)、Count(orders)、Sum(Cost),而未来的某个查询只需要 Sum(Sales),则 Tableau 会获取该结果并使用它。
  • 本机缓存:如果查询与另一个查询完全相同,则 Tableau 会使用相同的结果。 这是最后一级别的缓存。 如果此操作失败,Tableau 会转到数据。

Tableau 中的缓存频率

Tableau 的管理设置可用于管理缓存频率。 如果将服务器设置为“降低刷新频率”,则 Tableau 会将数据保留在缓存中长达 12 小时。 如果将其设置为“提高刷新频率”,则 Tableau 会在每次刷新页面时返回到数据。

如果客户需要反复使用同一仪表板(例如,“周一早晨的管道报表”),则应将其所在的服务器设置为“降低刷新频率”,使仪表板全都使用同一缓存。

Tableau 中的缓存预热

可以在 Tableau 中预热缓存,方法是:设置要在查看仪表板之前发送的仪表板订阅。 这是因为,需要先呈现面板,然后才能为订阅电子邮件生成图像。 请参阅使用订阅预热 Tableau Server 缓存

Azure Databricks 中的缓存

可以在用户使用 Tableau 仪表板之前缓存常用表或关键表,以减少 Azure Databricks 将结果返回到 Tableau 所用的时间。

可以在早上运行脚本,以便对那些在已进行缓存优化的虚拟机上进行 SELECT CACHE的特定表执行 SELECT CACHE

甚至可以缓存 Azure Databricks 从驱动程序获取的特定查询。

Tableau Desktop:显示了错误 The drivers... are not properly installed

问题:尝试将 Tableau Desktop 连接到 Databricks 时,Tableau 会在连接对话框中显示一条错误消息,其中包含指向驱动程序下载页的链接,你可以在该页中找到驱动程序链接和安装说明。

原因:安装 Tableau Desktop 时未运行受支持的驱动程序。

解决方案:下载 Databricks ODBC 驱动程序版本 2.6.15 或更高版本。

另请参阅:Tableau 网站上的错误“驱动程序…未正确安装”

其他资源