Snowflake

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

开始之前

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

  • 要连接到的服务器的名称
  • 身份验证方法:
    • OAuth:如果要启用来自的 IDP 联合,请使用此方法。
    • SAML IDP:如果您想在连接中嵌入 IDP 凭据,请使用此方法。
    • 用户名和密码:如果您想在 Snowflake 中存储用户凭据,请使用此方法。
  • 登录凭据取决于您选择的身份验证方法
  • (可选)要在每次 Tableau 连接时运行的初始 SQL 语句

需要驱动程序

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

注意:为了支持将 OAuth 与 Snowflake 结合使用,必须安装 Snowflake 提供的最新 ODBC 驱动程序(当前版本为 2.25.4)。

进行连接并设置数据源

选择 Snowflake 作为连接后,将显示一个包含 3 个选项卡的弹出式菜单。使用“常规”选项卡进行身份验证。若要在每次连接开始时运行 SQL 命令,您也可以使用“初始 SQL”。有关详细信息,请参见运行初始 SQL。您可以使用“高级”选项卡添加带有参数的客户连接。

将 Tableau 连接到数据

  1. 启动 Tableau,并在“连接”下选择“Snowflake”
  2. 输入要连接到的服务器的名称。
  3. 选择“身份验证”方法:“用户名和密码”“Okta 用户名和密码”“使用 OAuth 登录”
  4. 选择其中一种身份验证方法并完成登录步骤。
    Okta 用户名和密码:
    1. 输入“用户名”“密码”
    2. “Okta”字段中,输入 Okta 服务器的 URL。
    使用 OAuth 登录
    1. (可选)如果要在每次连接开始时运行 SQL 命令,请选择“初始 SQL”。有关详细信息,请参见运行初始 SQL
    2. 选择“登录”
    3. 在打开的网页中,通过输入“用户名”“密码” 并选择“登录”,从而登录到 Snowflake。或者,如果 Snowflake 配置为支持 SSO,则选择“单点登录”
    4. 单击“确定”确认授权访问您的 Snowflake 数据。
    5. 关闭浏览器窗口和 Tableau。
    6. 继续进行下一部分“设置数据源”。
  5. 选择“登录”
  6. 如果 Tableau 无法建立连接,请验证您的凭据是否正确。如果仍然无法连接,则说明您的计算机在定位服务器时遇到问题。请联系您的网络管理员或数据库管理员。

访问令牌超时:始终验证访问令牌 TDC

Snowflake 访问令牌 10 分钟后过期。在某些数据提取刷新过程中,当访问令牌过期时,将在作业的稍后阶段建立新的连接。为了解决这个问题,我们添加了一项新功能,该功能从 Tableau 2024.2 开始默认启用。若要在旧版本中启用此功能,您可以使用以下 TDC。

<connection-customization class='snowflake' enabled='true' version='10.0'>
    <vendor name='snowflake' />
    <driver name='snowflake' />
    <customizations>
        <customization name='CAP_OAUTH_VALIDATE_ALWAYS' value='yes'/>
    </customizations>
</connection-customization>

如果您使用 Tableau Cloud,则可以从 Tableau Desktop 发布,并在 Tableau 存储库数据源文件夹中安装 TDC。这会在发布时将 TDC 嵌入到工作簿或数据源中。

只要服务器端没有安装其他 TDC,就会始终应用嵌入式 TDC,无论启用标志的状态如何。并且 Tableau Cloud 上从未安装过 TDC(仅嵌入)。

注意:流程不支持嵌入式 TDC。

使用驱动程序参数自定义连接

您可通过将驱动程序参数附加到“高级”选项卡中的连接字符串来修改使用 Snowflake 连接器建立的连接。

注意:您无法更改 Tableau 生成的驱动程序参数,您只能附加参数。

例如,此语法指定未满足 no_proxy 值时要使用的代理服务器,并且允许主机名绕过代理服务器:

Proxy=http://proxyserver.company:80;no_proxy=.trustedserver.com;

有关另一个自定义驱动程序参数示例,请参见为 Snowflake 使用代理

 

注意:如果您需要自定义项而不将其嵌入到数据源中,您可以在 Windows 的注册表中配置参数(只有标记为“配置参数”的参数可用)。有关驱动程序参数的详细信息,请参见 Snowflake 网站上的 ODBC Configuration and Connection Parameters(ODBC 配置和连接参数)

设置数据源

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

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

  2. “仓库”下拉列表中,选择仓库或使用文本框按名称搜索仓库。

    注意:如果您将此项留空,并且不选择仓库,Tableau 将使用默认的 Snowflake 虚拟仓库。

    有关详细信息,请参见Snowflake 中的默认虚拟仓库

  3. “数据库”下拉列表中,选择数据库或使用文本框按名称搜索数据库。
  4. “架构”下拉列表中,选择架构或使用文本框按名称搜索架构。
  5. “表”下,选择表或使用文本框按名称搜索表。
  6. 将表拖到画布,然后选择工作表标签以开始分析。使用自定义 SQL 连接到特定查询,而非整个数据源。有关详细信息,请参见连接到自定义 SQL 查询

登录到 Mac

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

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

Snowflake 中的默认虚拟仓库

当您创建 Snowflake 数据源时,是指 Snowflake 仓库(用于计算资源)和 Snowflake 数据库(用于数据资源)。仓库和数据库都需要权限才能访问。假设您拥有每个仓库和数据库的权限,您可以根据您需要的计算能力使用不同的仓库访问同一数据库。

创建数据源时,您可以选择从下拉列表中选择仓库,如果将其留空并且不选择仓库,Tableau 使用默认的 Snowflake 虚拟仓库。如果您随后发布该数据源或工作簿,当用户连接时,Tableau 将使用该用户的的默认 Snowflake 虚拟仓库。

应为每个用户分配一个默认仓库,以便 Tableau 可以将该仓库用作默认仓库,以便从 Snowflake 数据源中打开工作簿。

配置 Snowflake 服务器的 OAuth 支持

有关如何为 Tableau 和 Snowflake,之间的连接配置 OAuth 的信息,请参见为 Snowflake 连接配置 OAuth(链接在新窗口中打开)

为 Snowflake 使用代理

您可以通过代理从 Tableau 连接到 Snowflake。如果使用版本 2019.4 或更高版本,则可以使用连接器对话框,通过在“高级”选项卡中键入所需的参数来配置它。

例如:

proxy=http://proxyserver.company:80

有关应使用的参数的信息,请参见 Snowflake 文档(链接在新窗口中打开)

注意:Tableau 不使用 DSN 连接到 Snowflake,因此您可以忽略 Snowflake 文档中有关使用 DSN 的说明。

如果您使用 2019.4 之前的 Tableau 版本,则可以通过使用 odbc-extras 在 TDC 文件中输入参数来配置它。

例如:

复制
<connection-customization class='snowflake' enabled='true' version='19.1'>
        <vendor name='snowflake' />
            <driver name='snowflake' />
                <customizations>
                <customization name='odbc-connect-string-extras' value='proxy=http://proxyserver.company:80' />
                </customizations></connection-customization>

有关详细信息,请参见 为本机连接器自定义连接字符串(链接在新窗口中打开)一文。

疑难解答

性能

使用以下信息来帮助修复在将 Tableau 与 Snowflake 一起使用时遇到的任何性能问题。

获取大小

当使用无界 VARCHAR 或 VARBINARY 字段时,驱动程序将返回字段大小 16M。这会导致 Tableau 使用较小的获取大小来保持在内存限制内,从而导致查询速度变慢。可通过几种方式来解决此问题:

架构变更

如果向列定义添加大小,例如 VARCHAR(256),这将允许 Tableau 计算最佳获取大小。

TDC 自定义

  • 您可以使用驱动程序参数 default_varchar_size 或 default_binary_size。您也可以(https://docs.snowflake.com/en/developer-guide/odbc/od

bc-parameters) 设置无界字段的最大字段大小。

  • 您可以使用高级 UI 或 TDC。

  • 您还需要设置附加功能 CAP_ODBC_FETCH_BUFFERS_RESIZABLE。

注意:除非您使用 Tableau Bridge,否则此解决方案不适用于 Tableau Cloud。

  • 如果您使用 Tableau Bridge,则可以在 Bridge主机上安装 TDC,以使其应用于通过该主机的所有连接。请参见下面的示例。

“参数”弹出对话框

如果您计划使用前面的 UI 自定义每个数据源的字段大小,请使用此 TDC。

复制
<connection-customization class='snowflake' enabled='true' version='10.0'>
    <vendor name='snowflake' />
    <driver name='snowflake' />
    <customizations>
        <customization name='CAP_ODBC_FETCH_BUFFERS_RESIZABLE' value='yes'/>
    </customizations>
</connection-customization>

使用此 TDC 应用所有数据源的自定义。

复制
<connection-customization class='snowflake' enabled='true' version='10.0'>
<vendor name='snowflake' />
<driver name='snowflake' />
<customizations>
<customization name='CAP_ODBC_FETCH_BUFFERS_RESIZABLE' value='yes'/>
<customization name='odbc-connect-string-extras' value='default_varchar_size=512;default_binary_size=512'/>
</customizations>
</connection-customization>

常见问题

下面是一些常见问题和解决步骤。

我有一个错误“此字段 XXX 不存在”,我该怎么办?

当您使用计算字段、将其添加到工作表并将数据源替换为 Snowflake 数据 (CustomSQL) 时,会出现此错误。

使用“替换字段引用”功能来解决错误。有关替换字段引用的其他信息,请参见替换字段引用

 

另请参见

感谢您的反馈!您的反馈已成功提交。谢谢!