Skip to main content
The Snowflake Target Connector is a robust tool designed to facilitate the seamless integration of Change Data Capture (CDC) updates into Snowflake data warehouses. Leveraging Snowpipe streaming functionality, this connector efficiently streams CDC updates into Snowflake, where they are written as inserts. Subsequently, a materialized view is employed to construct a copy of the source table, ensuring real-time data replication.

Key Features

  • CDC Streaming: utilizes Snowpipe streaming to deliver real-time changes from the source system.
  • Insert Operation: writes CDC updates as inserts into the target Snowflake database, preserving the full change history.
  • Materialized View: constructs a materialized view to mirror the source table, enabling easy access to replicated data.
  • Time Travel Support: retains historical data for time travel queries, facilitating data analysis and auditing.
  • Key-Pair Authentication: relies on Snowflake’s key-pair authentication mechanism — no passwords.
  • Schema evolution: new columns are added automatically as the source schema evolves.

Prerequisites

  • A Snowflake account where you wish to sync your data.
  • A role with the required permissions on the target database and schema:
    • USAGE on the database and schema
    • CREATE TABLE on the schema
    • INSERT, UPDATE, DELETE on target tables
  • A key pair (no passphrase) for authentication. To set it up:
    1. Generate the key pair:
      openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
      openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
      
    2. Register the public key on the Snowflake user:
      ALTER USER <your_user> SET RSA_PUBLIC_KEY='<public_key_body>';
      
    3. Copy the private key without the header and footer lines:
      -----BEGIN PRIVATE KEY-----
      -----END PRIVATE KEY-----
      

Configuration

FieldRequiredDescription
AccountYesSnowflake account identifier (e.g. myorg-myaccount or account.region.cloud)
UserYesUsername configured with key-pair authentication
DatabaseYesDatabase where tables will be created (e.g. ANALYTICS_DB)
SchemaYesSchema within the database (e.g. PUBLIC)
RoleYesRole to use for the session — must have write access to the target schema
Private KeyYesThe private key body, without headers
Enable Before/AfterYesWhen enabled, stores both the before and after images of each change event, allowing field-level change tracking in the target

How It Works

For each subscription, Popsink creates tables in the target schema and applies CDC events to keep Snowflake in sync with the source. Updates are streamed as inserts via Snowpipe streaming, and a materialized view exposes the latest state of each table. Schema evolution is handled automatically — new columns are added as the source schema evolves.