---
schema_version: "1"
id: 48bb29f676ad3546e91bb1f90c4e983d06c0f3827319cab5e39bd092281f2d29
title: Snowflake Output Connection
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/analytics/264-0-0/bi_integrate_connectors_output_snowflake.md
canonical_url: https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_connectors_output_snowflake.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 9934251b172b1b6f550ec097da55e47fc3ffa3525534151d1e7c7c59a7c88940
description: Create a remote connection using the Snowflake output connector to write data from CRM Analytics to a Snowflake table. Then, use Sync Out to push raw data from CRM Analytics to Snowflake, or a Data Prep recipe output node to push transformed data.
products:
  - CRM Analytics
  - Cross Cloud
release: "264"
---
# Snowflake Output Connection

Create a remote connection using the Snowflake output connector to write data from CRM Analytics to a Snowflake table. Then, use Sync Out to push raw data from CRM Analytics to Snowflake, or a Data Prep recipe output node to push transformed data.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/images/icon_note.png)

Note Use [Sync Out for Snowflake](https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_connectors_sync_out_snowflake.htm&release=264.0.0&type=5 "Sync Out for Snowflake exports your raw local Salesforce data via CRM Analytics to Snowflake using the CRM Analytics output connector for Snowflake. With Sync Out for Snowflake, keep your Salesforce data in Snowflake up to date using scheduled Data Sync without the need for a third-party ETL tool. Fresh Salesforce data is vital if you maintain a central Snowflake data lake for processing, analysis, business automation, or storage. For example, give your shipping logistics team the freshest data by merging your account data from your system of record, Salesforce, with your ERP’s shipping data in your data lake.") to push raw data from CRM Analytics to Snowflake after setting up the connection. If you want to sync data from Snowflake to CRM Analytics, use the [Snowflake Connection](https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_connectors_snowflake_settings.htm&release=264.0.0&type=5 "Create a remote connection using the Snowflake connector to sync data from Snowflake to CRM Analytics. This connector supports private key or OAuth 2.0 for authentication. Using OAuth 2.0 requires additional setup steps in Snowflake and the Salesforce credentials.") instead.

## How CRM Analytics Output Connectors with Output Nodes Work

CRM Analytics output connectors allow you to write the outcome of a recipe to an external system for further analysis, business automation, and storage. After you configure an output connector to the data source, create a recipe using Data Prep. Add an Output node to the recipe, select the Output connection, and choose the Snowflake table name from the list of objects. When the recipe runs, CRM Analytics writes the output dataset to the selected table. When you run the recipe again, the data previously written is deleted and the new data is written.Generate your Snowflake private key and private key passphrase using the [Snowflake Private Key documentation](https://docs.snowflake.com/en/user-guide/key-pair-auth.html#step-1-generate-the-private-key). If you opt to [rotate your Snowflake private key](https://docs.snowflake.com/en/user-guide/key-pair-auth.html#configuring-key-pair-rotation), manually update the connection properties with the new key.

## Connect to Snowflake with OAuth

To use the CRM Analytics Snowflake connector with an OAuth connection, you must configure Snowflake, Salesforce, CRM Analytics, and an external OAuth authorization server.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/images/icon_note.png)

Note You can’t use a custom authorization provider.

These high-level instructions help you navigate the steps involved. Remember to contact your Network Security or IT department for help with configuration consistent with your organization’s security requirements.

1. Configure Snowflake and your selected external authorization server. Here’s [Snowflake's help](https://docs.snowflake.com/en/user-guide/oauth-intro.html), with detailed instructions for connecting to services like Okta and Microsoft Azure AD.
2. With the authorization server is configured, follow the steps under _Define an Authentication Provider in Salesforce_ from [Configure an Authentication Provider Using OpenID](https://help.salesforce.com/s/articleView?id=xcloud.sso_provider_openid_connect.htm&language=en_US).
    - If you’re using Okta, here are [Okta's instructions](https://support.okta.com/help/s/article/How-to-connect-Salesforce-with-Okta-using-OpenID-Connect?language=en_US) for adding their service to Salesforce.
3. With the authentication provider added to Salesforce, [define a named credential](https://help.salesforce.com/s/articleView?id=xcloud.named_credentials_about.htm&language=en_US) in Salesforce. Select the OAuth 2.0 authentication protocol and Named Principal identity type. Use of External Credentials isn't supported.
4. Add the Snowflake connection. For **Authentication Type** setting, enter OAuth.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/images/icon_note.png)

Note OAuth 2.0 is the industry-standard protocol for authorization, however we’re unable to test every possible combination of services. Log a case with Salesforce Customer Support if your service can’t connect with the Authentication Provider system.

## Enable and Add the Snowflake Output Connector

1. From Setup, enter Analytics in the Quick Find box.
2. Select **Settings** under **Analytics**.
3. Select **Enable Snowflake output Connection** and **Save**.
4. In the Data Manager, click the **Connections** tab.
5. Click **New Connection**.
6. Click **Output**, select **Snowflake Output Connector**, then click **Next**.
7. Enter the connection settings, as described in the Connection Settings section.
8. Click **Save & Test**. Save & Test validates your settings by attempting to connect to the source. If the connection fails, CRM Analytics shows possible reasons.

All settings require a value, unless otherwise indicated.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d140272e219">Connection Setting</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d140272e222">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e219 ">Connection Name</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e222 ">Required. Identifies the connection. Use a convention that lets you easily distinguish
              between different connections.</td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e219 ">Developer Name</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e222 ">Required. The API name for the connection. This name can’t include spaces. You can’t change
              the developer name after you create the connection.</td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e219 ">Description</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e222 ">Required. The description for the connection.</td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e219 ">Authentication Type</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e222 ">
              <p>Required. The authentication type. Valid values include
                <code>OAuth</code>, <code>Password</code>, and <code>PrivateKey</code>.
              </p>
              <ul>
                <li>If you use <code>OAuth</code>, enter a value in the <strong class="uicontrol">Named Credential</strong> field.</li>

                <li>If you use <code>Password</code>, enter a value in the <strong class="uicontrol">Username</strong> and <strong class="uicontrol">Password</strong> fields.</li>

                <li>If you use <code>PrivateKey</code>, enter a value in the <strong class="uicontrol">Username</strong>, <strong class="uicontrol">Private Key</strong>, and
                  <strong class="uicontrol">Private Key Passphrase</strong> fields.
                </li>
              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e219 ">Named Credential</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e222 ">Required. The <strong>Name</strong> field from a named credential stored in your Salesforce org. </td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e219 ">Username</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e222 ">Required for password or private key authentication. The user name for the Snowflake account.</td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e219 ">Password</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e222 ">Required for password authentication. The password for your Snowflake account. </td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e219 ">Account</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e222 ">Required. The name of your Snowflake account. The account name is the first segment in the
              domain in your Snowflake URL. For example, <kbd>123abc</kbd> is your
              account name in
              <kbd>https://123abc.snowflakecomputing.com</kbd>.
            </td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e219 ">Warehouse</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e222 ">Required.The Snowflake warehouse name. This setting is case-sensitive, so enter the value
              exactly as it appears in Snowflake.</td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e219 ">Role</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e222 ">Optional. The Snowflake role assigned to the user that you’re using to
              connect.</td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e219 ">Database</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e222 ">Required. The Snowflake database name. This setting is case-sensitive, so enter the value
              exactly as it appears in Snowflake.</td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e219 ">Schema</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e222 ">Required. The Snowflake schema name. This setting is case-sensitive, so enter the value
              exactly as it appears in Snowflake.</td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e219 ">Private Key</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e222 ">
              <p>Required for private key authentication*. A private key associated with your Snowflake
                account.
              </p>
              <div class="slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium">
                <div class="slds-media slds-media_responsive">
                  <div class="slds-media__figure"><span class="slds-icon_container slds-icon_container_circle slds-icon-note-note"><img style="margin-bottom:0;" src="https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/images/icon_note.png" alt="Note"></span></div>
                  <div class="slds-media__body" style="padding-top:.5rem;padding-bottom:.5rem;"><span class="slds-text-title_caps">Note</span> You must use an encrypted private key and password generated with the Advanced Encryption
                    Standard (AES). For the detailed steps, refer to <a href="https://docs.snowflake.com/en/user-guide/key-pair-auth" target="_blank">Key-pair authentication and key-pair rotation</a> in Snowflake Help. When using
                    the <code>openssl</code> command to generate the encrypted key, be sure to replace <code>des3</code> with
                    <code>aes256</code> to ensure advanced encryption is used.
                  </div>
                </div>
              </div>
            </td>

          </tr>
          <tr class="">
            <td data-label="Connection Setting" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e219 ">Private Key Passphrase</td>

            <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d140272e222 ">Required for private key authentication*. The passphrase associated with your specified private
              key.</td>

          </tr>
        </tbody>
      </table>

\*Enter the Password or both the Private Key and Private Key Passphrase. Learn more about private keys in the [Snowflake Private Key documentation](https://docs.snowflake.com/en/user-guide/key-pair-auth.html).

## Push Data to Snowflake

With the Snowflake Output Connector configured, you have two options to push data to Snowflake from CRM Analytics. To push augmented and transformed data, build a Data Prep recipe that merges and transforms the data to push to Snowflake. Add an output node and configure it to use the Snowflake Output connector.

1. Select to write to an **Output Connection**.
2. Select the connection name of the Snowflake Output connection you created.
3. Select **Apply**.
4. Save the recipe.

To push raw data, without augmentation or transformation, use [Sync Out for Snowflake](https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_connectors_output_snowflake.htm&release=264.0.0&type=5 "Create a remote connection using the Snowflake output connector to write data from CRM Analytics to a Snowflake table. Then, use Sync Out to push raw data from CRM Analytics to Snowflake, or a Data Prep recipe output node to push transformed data."). Data is pushed with each Data Sync run. You don’t use a Data Prep recipe. Keep these behaviors in mind when working with the Snowflake output connector and using a Data Prep recipe output node.

- You can use an output connection more than once per recipe, but each output node must use a different object. The connector's per-run limit applies to each output node, and each output node is subject to the rolling 24-hour limit. To push again from the same recipe, add another connection with the same credentials
- Output connections are only available for recipes built with Data Prep.
- When the prior run’s data is deleted in preparation for the current run, the earlier version of an output dataset is inaccessible. Set up a process to copy or use the output after each run.

#### See Also

- [Output Node: Write Recipe Results to a Dataset or External System](https://help.salesforce.com/s/articleView?id=analytics.bi_integrate_recipe_output_results.htm&release=264.0.0&type=5 "In CRM Analytics, use Output nodes with Data Prep recipes to write recipe results to a target, such as a dataset, staged data, .csv, a Data 360 data lake object, or remote location like Amazon S3. A recipe can have more than one Output node. If the recipe writes to a dataset, you can change the API name and label of the dataset in the Output node. If an existing dataset uses the specified API name, the recipe overwrites the existing dataset when it runs.")