Back to Datahub

Snowflake Configuration

docs/quick-ingestion-guides/snowflake/configuration.md

1.7.08.6 KB
Original Source

Configuring Your Snowflake Connector to DataHub

Now that you have created a DataHub-specific user with the relevant roles in Snowflake in the prior step, it's now time to set up a connection via the DataHub UI.

Configure Secrets

  1. Within DataHub, navigate to the Ingestion tab in the top, right corner of your screen
<p align="center"> </p>

:::note If you do not see the Ingestion tab, please contact your DataHub admin to grant you the correct permissions :::

  1. Navigate to the Secrets tab and click Create new secret
<p align="center"> </p>
  1. Create a Password secret

This will securely store your Snowflake password within DataHub

  • Enter a name like SNOWFLAKE_PASSWORD - we will use this later to refer to the secret
  • Enter the password configured for the DataHub user in the previous step
  • Optionally add a description
  • Click Create
<p align="center"> </p>

Configure Recipe

  1. Navigate to the Sources tab and click Create new source
<p align="center"> </p>
  1. Select Snowflake
<p align="center"> </p>
  1. Fill out the Snowflake Recipe

Enter the Snowflake Account Identifier as Account ID field. Account identifier is the part before .snowflakecomputing.com in your snowflake host URL:

<p align="center"> </p>

Learn more about Snowflake Account Identifiers here

Add the previously added Password secret to Password field:

  • Click on the Password input field
  • Select SNOWFLAKE_PASSWORD secret
<p align="center"> </p>

Populate the relevant fields using the same Username, Role, and Warehouse you created and/or specified in Snowflake Prerequisites.

<p align="center"> </p>
  1. Click Test Connection

This step will ensure you have configured your credentials accurately and confirm you have the required permissions to extract all relevant metadata.

<p align="center"> </p>

After you have successfully tested your connection, click Next.

Schedule Execution

Now it's time to schedule a recurring ingestion pipeline to regularly extract metadata from your Snowflake instance.

  1. Decide how regularly you want this ingestion to run-- day, month, year, hour, minute, etc. Select from the dropdown
<p align="center"> </p>
  1. Ensure you've configured your correct timezone
<p align="center"> </p>
  1. Click Next when you are done

Finish Up

  1. Name your ingestion source, then click Save and Run
<p align="center"> </p>

You will now find your new ingestion source running

<p align="center"> </p>

Validate Ingestion Runs

  1. View the latest status of ingestion runs on the Ingestion page
<p align="center"> </p>
  1. Click the plus sign to expand the full list of historical runs and outcomes; click Details to see the outcomes of a specific run
<p align="center"> </p>
  1. From the Ingestion Run Details page, pick View All to see which entities were ingested
<p align="center"> </p>
  1. Pick an entity from the list to manually validate if it contains the detail you expected
<p align="center"> </p>

Congratulations! You've successfully set up Snowflake as an ingestion source for DataHub!

Advanced Configuration

Snowflake Internal Marketplace (Optional)

If you want to ingest Snowflake internal marketplace listings (private data sharing via Data Exchange) as Data Products, you'll need to enable additional configuration.

For Consumer Organizations (Purchasing Listings)

If you purchase/install internal marketplace listings, add these options to your recipe:

yaml
marketplace:
  enabled: true
  marketplace_mode: "consumer" # This is the default
  # Optional: Configure time window for usage statistics
  start_time: "-7 days" # Default: -1 day
  end_time: "now"

# Required: Map your imported databases to their source shares
shares:
  DEMO_DATABASE_SNOWFLAKE_SHARE_1754064671731: # From: SHOW SHARES
    database: "SOURCE_DATABASE" # Source database in the share
    consumers:
      - database: "DEMO_DATABASE" # Your purchased/imported database
        # Optional but recommended: Explicit listing mapping for precise linking
        listing_global_name: "PROVIDER.REGION.LISTING_NAME" # From: SHOW AVAILABLE LISTINGS

Tip: Adding listing_global_name ensures your purchased databases are accurately linked to their marketplace listings, especially when you have multiple similar listing names.

For Provider Organizations (Publishing Listings)

If you publish/share data through the internal marketplace, add these options to your recipe:

yaml
marketplace:
  enabled: true
  marketplace_mode: "provider"
  # Optional: Assign owners to your Data Products
  internal_marketplace_owner_patterns:
    "^Customer.*": ["data-team"]
  # Optional: Configure time window for usage statistics
  start_time: "-30 days"
  end_time: "now"

# Include your source databases being shared
database_pattern:
  allow:
    - "YOUR_SOURCE_DATABASE"

Important: For provider mode to work, you must have granted imported privileges on database snowflake to both the role AND the user (see Setup for details). Share access in Snowflake is granted at the user level, not the role level.

For Organizations Doing Both

Use marketplace_mode: "both" to track both purchased and published listings in the same ingestion.

For complete documentation on marketplace configuration, see the Snowflake connector documentation.