本文介绍如何将 Tableau 连接到 SAP HANA 数据库并设置数据源。

注意:此连接器使用适用于 Mac、Linux 和 Windows 的 JDBC 驱动程序。适用于 Windows 的 JDBC 驱动程序是 Tableau 版本 2021.1 中新增的。适用于 Mac 和 Linux 的 JDBC 驱动程序随 Tableau 版本 2020.2 一起引入。推荐使用 JDBC 驱动程序版本 2.3.4。

开始之前

在开始之前,请收集以下连接信息:

  • 您是在建立单节点还是多节点连接?

    • 单节点:承载要连接到的数据库的服务器的名称,以及端口号(如果使用非默认端口)

    • 多节点:承载要连接到的数据库的服务器的名称和端口号

  • 身份验证方法:

    • Windows:Windows 身份验证或用户名和密码

    • Mac:Kerberos 或用户名和密码

  • 是否要连接到 SSL 服务器?

  • (可选)要在每次 Tableau 连接时运行的初始 SQL 语句

需要驱动程序

此连接器需要驱动程序才能与数据库通信。计算机上可能已经安装了所需的驱动程序。如果计算机上未安装该驱动程序,Tableau 将在连接对话框中显示一条错误消息,其中包含指向驱动程序下载(链接在新窗口中打开)页面的链接,您可在该页面中找到驱动程序链接和安装说明。

进行连接并设置数据源

  1. 启动 Tableau,并在“连接”下选择“SAP HANA”。有关数据连接的完整列表,请在“至服务器”下选择“更多”。然后执行以下操作:

    1. 选择连接的类型:

    2. 指定要如何登录到服务器:

      在 Windows 上:

      • 如果您的环境支持单点登录 (SSO) ,请选择“使用 Windows 身份验证”。有关单点登录和环境要求的详细信息,请参见支持 SAP HANA 单点登录 (SSO)

      • 或者,选择“使用特定用户名和密码”。如果服务器有密码保护,而您不在 Kerberos 环境中,则您必须输入用户名和密码。

      在 Mac 上:选择“Kerberos”,或者选择“使用特定用户名和密码”

      在连接到 SSL 服务器时,选中“需要 SSL”选项。

    3. (可选)选择“初始 SQL”以指定要在每次连接开始时(例如打开工作簿、刷新数据提取、登录到 Tableau Server 或发布到 Tableau Server 时)运行的 SQL 命令。有关详细信息,请参见运行初始 SQL

    4. 选择“登录”

      如果 Tableau 无法建立连接,请验证您的凭据是否正确。如果仍然无法连接,则说明您的计算机在定位服务器时遇到问题。请联系您的网络管理员或数据库管理员。

  2. 在数据源页面上,执行下列操作:

    1. (可选)在页面顶部选择默认数据源名称,然后输入要在 Tableau 中使用的唯一数据源名称。例如,使用可帮助其他数据源用户推断出要连接的数据源的数据源命名约定。

    2. “架构”下拉列表中,选择搜索图标,或在文本框中输入架构名称并选择搜索图标,然后选择架构。

    3. “表”文本框中,选择搜索图标,或输入表名称并选择搜索图标,然后选择表。

      Tableau Desktop 还支持连接到 SAP HANA 表函数,这些函数出现在“数据源”页面左侧窗格中的“存储过程”下。

    4. 将表拖到画布,然后选择工作表标签以开始分析。

      默认情况下,将显示列标签,而不是列名称。

      使用自定义 SQL 连接到特定查询,而非整个数据源。有关详细信息,请参见连接到自定义 SQL 查询

      注意:使用分析视图创建自联接时,如果其中一个表包含变量,请确保包含变量的表位于左侧。否则,联接可能无法返回预期结果。

登录到 Mac

如果在 Mac 上使用 Tableau Desktop,则在输入服务器名称进行连接时,请使用完全限定的域名(例如 mydb.test.ourdomain.lan)而不是相对域名(例如 mydb 或 mydb.test)。

或者,可以将域添加到 Mac 计算机的“搜索域”的列表中,以便在您连接时,只需要提供服务器名称。若要更新“搜索域”的列表,请转到“系统首选项”>“网络”>“高级”,然后打开“DNS”选项卡。

将 SAP HANA 级别分层结构转换为用户分层结构

在所有 Tableau 版本中,当您创建 SAP HANA 数据源或工作簿时,可以在 Tableau 中创建自己的分层结构,该分层结构只能在 Tableau 中使用。

从 Tableau 2019.4 开始,除了支持创建自己的分层次构以便在 Tableau 中使用之外,Tableau 现在还支持在 SAP HANA 中创建的级别分层结构。这意味着,在将 Tableau 连接到具有级别分层结构的 SAP HANA 计算视图时,“数据”窗格中将显示 SAP HANA 级别分层结构的结构。

如果要在 Tableau 中修改 SAP HANA 级别分层结构,则需要将 SAP HANA 级别分层结构转换为用户分层结构。将 SAP HANA 级别分层结构转换为用户分层结构后,将无法撤消。如果您决定要使用 SAP HANA 级别分层结构而不是用户分层结构,则需要重新开始。

若要转换为用户分层结构,请执行以下步骤:

  1. 在工作表左侧的“数据”窗格中,选择分层结构,然后选择下拉菜单。
  2. 在下拉菜单中,选择“转换为用户分层结构”

自定义 JDBC 连接

在 Mac 和 Linux 上,SAP HANA 使用 JDBC 连接,您可以使用属性文件对其进行自定义。有关详细信息,请参见 Tableau 社区中的使用属性文件自定义 JDBC 连接(链接在新窗口中打开)

在 Mac 上安装受信任的 SSL 证书

如果要使用 SSL/TLS 对 Tableau Desktop 和数据库之间的通信进行加密,您可能需要将证书添加到 Java 证书信任存储库。如果数据库使用自签名证书,则必须这样做。

注意:从 Tableau 版本 2020.2 开始,您可以将自定义证书导入到“系统”钥匙串中。有关详细信息,请参见适用于 JDBCP 连接的单向 SSL

若要使用 SSL/TLS 将 Tableau Desktop 连接到数据库,请按照以下步骤操作:

  1. 启动终端应用程序,并导航到 Java Home 目录,该目录通常位于 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home,除非您安装了 JDK 或设置了 JAVA_HOME 环境变量。

  2. 运行以下命令。(您可能需要使用 sudo 终端命令,管理可使用该命令以其他用户(例如 root)身份执行命令。

    bin/keytool -importcert -keystore cacerts -alias <certificate name>  -file <path to certificate file>

有关安装受信任证书的详细信息,请查阅 Java 运行时环境的文档。

选择变量和输入参数

如果您使用的表包括必需或可选的变量或参数,则“变量和输入参数”对话框将打开。

  • 必需的变量和参数将显示其当前值或“*必填”

  • 可选的变量和参数显示其当前值或显示为空白。

  • 通过选中“提示”下的复选框,在工作簿打开时提示输入变量。

选择一个变量或参数并为其键入或选择值。为所有必填值和您要包括的任何可选值重复此步骤,然后选择“确定”

注意:您可以使用基于 SQL 查询的 SAP HANA 提示。

支持 SAP HANA 单点登录 (SSO)

如果 SAP HANA 配置为支持单点登录 (SSO),在登录到 SAP HANA 服务器之后,您可以访问数据,并将数据源和工作簿发布到 Tableau Server,而不必重新输入您的用户名和密码。而且,您可以发布数据源或工作簿,以便采用 SSO 的其他用户可以访问已发布的数据源和工作簿,而无需输入他们的用户名和密码。

若要使用 SSO,您需要使用“Viewer(查看者)凭据”身份验证将数据源和工作簿发布到 Tableau Server。 若要启用“Viewer(查看者)凭据”身份验证,您必须在 Windows 计算机上使用 Windows 身份验证或在 Mac 上使用 Kerberos 连接到 SAP HANA。 有关详细信息,请参见发布到服务器

重要信息: 您的环境必须正确配置才能支持 SAP HANA SSO:

登录到服务器

在环境中设置 SSO 时,若要登录到 SAP HANA,只需输入服务器名称,在 Windows 计算机上选择“使用 Windows 身份验证”或在 Mac 上选择“Kerberos”,然后单击“登录”

发布到服务器

在 SSO 环境中,如果您使用正确的身份验证模式将数据源或工作簿发布到 Tableau Server,用户不必输入其凭据即可访问该数据源或工作簿。

若要在将数据源或工作簿发布到 Tableau Server 时启用 SSO,请执行以下步骤:

  1. 选择“服务器”>“发布数据源”“服务器”>“发布工作簿”
  2. 在“数据源”下,单击“编辑”

  3. 在“管理数据源”对话框中,执行以下操作:

    1. 选择“发布类型” “嵌入工作簿中”“单独发布”

    2. “身份验证”选择“Viewer(查看者)凭据”

  4. 单击“发布”

如何在使用 SSO 时刷新 HANA 数据提取

如果使用单点登录 (SSO) 连接到 SAP HANA,由于身份验证限制的原因,您将无法在将数据源或工作簿发布到服务器时计划数据提取刷新。不过,您可以使用 Tableau 数据提取实用工具来自动执行数据提取刷新任务。

例如,以下命令将刷新已发布到 Tableau Server 的名为“mydatasource”的 SAP HANA 数据提取。此命令指定以下内容:

  • Tableau Server 的名称

  • 要刷新的数据源的名称

C:\Program Files\Tableau\Tableau 10.2\bin>tableau refreshextract --server https://mytableauserver --datasource mydatasource

有关该实用工具的详细信息,请参见Tableau 数据提取命令行实用工具

性能提示

您可以通过启用以下一种或两种功能来提高性能:

  • 查询参数绑定
  • 共享元数据缓存

以下各部分介绍如何使用这些功能。

使用绑定变量

Tableau 可为您的 SAP HANA 查询使用绑定变量。这提高了性能:

  • 对于查询,HANA 可以编译一次查询并多次执行它。
  • 对于多节点 HANA 部署 – 参数化查询会以最佳方式路由到正确的节点。

若要启用此功能,Tableau Server 管理员可以在 TDC 文件中添加 CAP_ODBC_QUERY_USE_PREPARE_PARAMETER_MARKER 功能。

注意:此功能需要 Tableau 2018.3 或更高版本。
不管它的名称如何,CAP_ODBC_QUERY_USE_PREPARE_PARAMETER_MARKER 可用于 JDBC 以及 ODBC。

使用列元数据集合

Tableau 支持列元数据集合,从而能大大改进某些视图的加载时间。

当 Tableau 读取表或视图的列元数据时,默认情况下它会使用表上的已准备好的查询。这通常是最准确的选择,但可能不是最高效的。

(可选)您可以使用列元数据集合。也就是说,您可以使用 TDC 文件禁用准备好的查询元数据。执行此操作时,Tableau 将使用 ODBC API SQLColumns。虽然此方法速度更快,但可能不太准确。这就是为什么您应该谨慎使用此选项,并且仅当它看起来是适合您的数据的好方法才使用。

通过 SQLColumns 使用列元数据是使用以下功能启用的:

  • CAP_ODBC_METADATA_SUPPRESS_EXECUTED_QUERY
  • CAP_ODBC_METADATA_SUPPRESS_PREPARED_QUERY

注意:若要将这些功能应用于临时表,您必须安装 Tableau Server 2019.3.6 或更高版本。然后,您可以将这些功能添加到 TDC 文件。

SAP HANA 的 TDC 示例

您的 TDC 文件看起来应类似于以下示例。大多数情况下,您将不需要其他功能。特别是,请务必避免诸如 CAP_ODBC_METADATA_SUPPRESS_SQLPRIMARYKEYS_API 和 CAP_ODBC_METADATA_SUPPRESS_SQLFORIEGNKEYS_API 等功能。这些功能或许能加快初始连接时间,但会导致稍后生成的查询效率较低。

<?xml version='1.0' encoding='utf-8' ?>
<connection-customization class='saphana' enabled='true' version='9.3'>
<vendor name='saphana' />
<driver name='saphana' />
<customizations>
<customization name='CAP_ODBC_QUERY_USE_PREPARE_PARAMETER_MARKER' value='yes' />
</customizations>
</connection-customization>

有关使用 TDC 文件的详细信息,请参见自定义和调整 ODBC 连接主题中的“创建 TDC 文件”。另请参见名为将 TDC 文件与 Tableau Server 配合使用的知识库文章。

重要信息:确保在 connection-customization 行中包含 enabled=’true’。

另请参见

感谢您的反馈!