Snowflake

This article describes how to connect Tableau to a Snowflake data warehouse and set up the data source.

Before you begin

Before you begin, gather this connection information:

  • Name of the server name that you want to connect to
  • Authentication method:
    • OAuth: Use this method if you want to enable federation from an IDP.
    • SAML IDP: Use this method if you want to embed the IDP credentials in the connection.
    • Username and Password: Use this method if you want to store user credentials in Snowflake.
  • Sign-in credentials depends on the authentication method you choose
  • (Optional) Initial SQL statement to run every time Tableau connects

Driver required

This connector requires a driver to talk to the database. You might already have the required driver installed on your computer. If the driver is not installed on your computer, Tableau displays a message in the connection dialog box with a link to the Driver Download(Link opens in a new window) page where you can find driver links and installation instructions.

Note:To support using OAuth with Snowflake, you must install an ODBC driver from Snowflake that is version 2.25.4 or more recent.

Make the connection and set up the data source

After you select Snowflake as your connection, a POPUP menu displays with 3 tabs. Use the General tab for authentication. You can also use the Initial SQL to run a SQL command at the beginning of every connection. For more information, see Run Initial SQL. You can use the Advanced tab to add customer connections with parameters.

Connect Tableau to your data

  1. Start Tableau and under Connect, select Snowflake.
  2. Enter the name of the server that you want to connect to.
  3. Select the Authentication method: Username and Password, Okta Username and Password, or Sign in using OAuth.
  4. Select one of the authentication methods and complete the login steps.
    Okta Username and Password:
    1. Enter the Username and Password,
    2. In the Okta field, enter the URL for the Okta server.
    Sign in using OAuth
    1. (Optional) Select Initial SQL if you want to run a SQL command at the beginning of every connection. For more information, see Run Initial SQL.
    2. Select Sign In.
    3. In the web page that opens, log in to Snowflake by entering your User Name and Password and selecting Log In. Or select Single Sign On if Snowflake is configured to support SSO.
    4. Click OK to confirm authorization to access your Snowflake data.
    5. Close the browser window and Tableau.
    6. Proceed to the next section, "Set up the data source."
  5. Select Sign In.
  6. If Tableau can't make the connection, verify that your credentials are correct. If you still can't connect, your computer is having trouble locating the server. Contact your network administrator or database administrator.

Access Token Timeout: Always Validate Access Token TDC

The Snowflake access token expires after 10 minutes. In certain extract refresh processes, new connections are established later in the job when the access token has expired. To address this issue we have added a new capability, which is enabled by default starting in Tableau 2024.2. To enable this capability in older releases you can use the following 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>

If you're using Tableau Cloud you can publish from Tableau Desktop with the TDC installed in the Tableau repository datasources folder. This will embed the TDC in the workbook or datasource on publish.

The embedded TDC is always applied, regardless of the status of the enabled flag, as long as there isn’t another TDC installed on the server side. And there is never an installed TDC on Tableau Cloud (only embedded).

Note: Embedded TDCs are not supported with flows.

Customize the connection using driver parameters

You can modify the connection made with the Snowflake connector by appending driver parameters to the connection string in the Advanced tab.

Note: You can’t change the driver parameters that Tableau generates; you can only append parameters.

For example, this syntax specifies a proxy server to use when the no_proxy values aren’t met and host names are allowed to bypass the proxy server:

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

For another custom driver parameters example, see Use a proxy for Snowflake.

 

Note: If you want customization without embedding it in the data source you can configure parameters in the registry on Windows (only parameters that are marked as "Configuration Parameters" are available). For details about driver parameters, see ODBC Configuration and Connection Parameters on the Snowflake website.

Set up the data source

On the data source page, do the following:

  1. (Optional) Select the default data source name at the top of the page, and then enter a unique data source name for use in Tableau. For example, use a data source naming convention that helps other users of the data source figure out which data source to connect to.

  2. From the Warehouse dropdown the warehouse or use the text box to search for a warehouse by name.

    Note: If you leave this blank and don't select a warehouse, Tableau uses your default Snowflake virtual warehouse.

    For more information, see Default virtual warehouses in Snowflake.

  3. From the Databasedropdown a database or use the text box to search for a database by name.
  4. From the Schemadropdown a schema or use the text box to search for a schema by name.
  5. Under Table, select a table or use the text box to search for a table by name.
  6. Drag a table to the canvas, and then select the sheet tab to start your analysis.

Sign in on a Mac

If you use Tableau Desktop on a Mac, when you enter the server name to connect, use a fully qualified domain name, such as mydb.test.ourdomain.lan, instead of a relative domain name, such as mydb or mydb.test.

Alternatively, you can add the domain to the list of Search Domains for the Mac computer so that when you connect, you need to provide only the server name. To update the list of Search Domains, go to System Preferences > Network > Advanced, and then open the DNS tab.

Default virtual warehouses in Snowflake

When you create a Snowflake data source, your Snowflake warehouse (for computational resources) and Snowflake databases (for data resource). Both warehouses and databases require permissions to access them. You can use different warehouses to access the same database, depending on the computation power you need, assuming you have permissions for each warehouse and database.

When you create a data source, you have the option to choose a warehouse from a dropdown list, leave this blank and don't select a warehouse, Tableau uses your default Snowflake virtual warehouse. If you subsequently publish that data source or workbook, when a user connects, Tableau will use that person's default Snowflake virtual warehouse.

Each user should be assigned a default warehouse so that Tableau can use that one as a default to open a workbook from a Snowflake data source.

Configure Snowflake server support for OAuth

For information about how to configure OAuth for connections between Tableau and Snowflake, see Configure OAuth for Snowflake Connections(Link opens in a new window).

Use a proxy for Snowflake

You can connect from Tableau through a proxy to Snowflake. If you’re usinyou’reau version 2019.4 or later, you can configure it with the connector dialog by typing the required parameters in the Advanced tab.

For example:

proxy=http://proxyserver.company:80

For information about the parameters you should use, see the Snowflake documentation(Link opens in a new window).

Note: Tableau doesn't use a DSN to connect to Snowflake, so you can ignore the instructions in the Snowflake documentation about using a DSN.

If you’re using version of Tableau before 2019.4, you can configure it by entering the parameters in a TDC file using odbc-extras.

For example:

Copy
<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>

For more information, see the Customize the Connection String for a Native Connector(Link opens in a new window) article.

Troubleshooting

Performance

Use the following information to help fix any performance issues you experience while using Tableau with Snowflake.

Fetch Size

When using unbounded VARCHAR or VARBINARY fields, the driver will return the field size as 16M. This causes Tableau to use a small fetch size to stay within memory limits, which results in slow query speed. There are several ways to address this.

Schema Changes

If you add a size to the column definition, such as VARCHAR(256), this will allow Tableau to calculate the optimal fetch size.

TDC Customizations

  • You may use the driver parameters default_varchar_size or default_binary_size You can also(https://docs.snowflake.com/en/developer-guide/odbc/od

bc-parameters) to set a max field size for unbounded fields.

  • You can use the advanced UI or a TDC.

  • You’ll also need to set an additional capability CAP_ODBC_FETCH_BUFFERS_RESIZABLE.

Note: This solution won’t work for Tableau Cloud, unless you’re using Tableau Bridge.

  • If you’re using Tableau bridge you can install the TDC on the bridge host to have it apply to all connections going through that host. See below for examples.

Parameter popup dialog

Use this TDC if you plan on customizing the field size for each datasource, using the preceding UI.

Copy
<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>

Use this TDC to apply the customizations for all datasources.

Copy
<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>

Frequently asked questions

Here’s some common problems and steps to resolution.

I have an error "This Field XXX Does Not Exist" what do I do?

This error appears when you’re using a calculation field, adding it to the worksheet, and replacing the data source with the Snowflake data (CustomSQL).

Use the Replace Field References function to resolve the error. For additional information on replacing field references, see Replace Field References.

 

See also

Thanks for your feedback!Your feedback has been successfully submitted. Thank you!