Connecting to Snowflake from Domino




Overview

Snowflake is a cloud-based data-warehouse. This article describes how to connect to Snowflake from Domino. In order to connect successfully, you must have network connectivity between Snowflake and your Domino deployment.




Connecting to Snowflake with Domino Data Sources

The easiest way to connect to a Snowflake instance from Domino is to use a Domino Data Source.

Configuration

To create a Snowflake Data Source select Snowflake as the Data Source type from the New Data Source wizard and specify the relevant parameters as shown below.

create_data_source_snowflake.png

Authentication

Specify the credentials that will be used to connect to Snowflake.

Currently the only authentication mechanism supported is username and password. The credentials will be securely stored in the Domino secret store backed by HashiCorp Vault.

credentials_data_source_snowflake.png

Retrieving data

Once a Snowflake data source is configured, users, who have Domino permissions to use it and have specified their credentials, can use the Domino Data API to retrieve data through the connector.

For more information, please refer to the following documentation.

Connecting to Snowflake with Python

Domino recommends the Snowflake Python connector (snowflake-connector-python).


Environment setup

Use the Dockerfile instruction below to install snowflake-connector-python and it’s dependencies in your environment.

USER root

RUN apt-get install -y libssl-dev libffi-dev && \
    pip install -U pip && pip install --upgrade snowflake-connector-python

USER ubuntu

If you encounter an error due to your Ubuntu version, use the following Dockerfile instruction:

USER root
RUN pip install -U pip && pip install --upgrade snowflake-connector-python
USER ubuntu

For a basic introduction to modifying Domino environments, watch this tutorial video.


Credential setup

There are several environment variables you should set up to store secure information about your Snowflake connection. Set the following as Domino environment variables on your user account:

  • SNOWFLAKE_USER

  • SNOWFLAKE_PASSWORD

  • SNOWFLAKE_ACCOUNT

Read Environment variables for secure credential storage to learn more about Domino environment variables.


Usage

Read the Snowflake python connector documentation for detailed information on how to use the package. Below is a simple example.

import snowflake.connector
import os

# Gets the version
ctx = snowflake.connector.connect(
    user=os.environ['SNOWFLAKE_USER'],
    password=os.environ['SNOWFLAKE_PASSWORD'],
    account=os.environ['SNOWFLAKE_ACCOUNT']
    )
cs = ctx.cursor()
try:
    cs.execute("SELECT current_version()")
    one_row = cs.fetchone()
    print(one_row[0])
finally:
    cs.close()
ctx.close()

Alternatively, you can use generic Python JDBC or ODBC tools to connect to Snowflake. However, they are not specialized for use with Snowflake. They may have inferior performance and will require more time to set up.

For more information on JDBC / ODBC connections, read:

https://docs.snowflake.net/manuals/user-guide/jdbc.html

https://docs.snowflake.net/manuals/user-guide/odbc.html