Ingest data from Snowflake tables, views, or Dynamic Tables to Propel.

Get started with Snowflake

Step-by-step instructions to connect your Snowflake data warehouse to Propel.

Architecture

Snowflake Data Pools connect to your Snowflake instance to sync data from a specified table, view, or Dynamic Table into Propel.

Syncs can be configured to occur at intervals ranging from 1 minute to 24 hours.

Features

Feature nameSupportedNotes
Syncs inserts, updates, and deletes.See How Propel syncs inserts, updates, and deletes.
Re-syncSee Re-sync section.
Configurable sync intervalSee How Propel syncs section. It can be configured to occur at intervals ranging from every minute to every 24 hours.
Sync Pausing / Resuming
Real-time updatesSee the Real-time updates section.
Real-time deletesSee the Real-time deletes section.
Batch Delete APISee Batch Delete API.
Batch Update APISee Batch Update API.
API configurableSee API docs.
Terraform configurableSee Terraform docs.

How Propel syncs inserts, updates, and deletes

Propel uses Snowflake streams for change data capture to sync records. The sync behavior depends on your chosen table engine:

  • MergeTree (append-only): Syncs inserts only.
  • ReplacingMergeTree (mutable): Syncs inserts, updates, and deletes based on sorting key.

See our table engine guide for details.

Sync intervals range from 1 minute to 24 hours. Choose based on your data freshness needs and upstream pipeline frequency.

Snowflake warehouse activates on each sync. Consider costs when setting intervals. We recommend a 60-second minimum auto-suspend period.

Supported data structures

Propel can sync these Snowflake data structures:

StructureRequirement
TableChange tracking enabled
ViewChange tracking enabled on underlying tables
Dynamic TablesNo additional setup (change tracking always enabled)

Schema changes

Propel enables the addition of new columns to Snowflake Data Pools through the AddColumnToDataPool job.

For breaking changes like column deletions or type modifications, recreate the Data Pool.

See our Changing Schemas section for more details.

Re-syncing data

Snowflake Data Pools with ReplacingMergeTree engine support safe re-syncing of all data. This operation:

  • Continues serving data to your application
  • Avoids creating duplicates
  • Doesn’t persist deleted Snowflake data

Re-sync when:

  • Snowflake stream is deleted, failed, or stale
  • Table is re-created
  • Stream is manually deleted
  • dbt full-refresh operation re-creates the table

During re-sync, Propel recreates the Snowflake stream on the table or view.

Use the reSyncSnowflakeDataPool mutation for API-based re-syncing.

Data Types

The table below shows default Snowflake to Propel data type mappings. When creating a Snowflake Data Pool, you can customize these mappings.

Snowflake TypePropel TypeNotes
DATETIME, TIMESTAMP_NTZ, TIMESTAMP_LTZ, TIMESTAMP_TZ, TIMESTAMP(p)TIMESTAMPTimestamps without a timezone will be synced as UTC.
DATEDATE
BOOLEANBOOLEAN
NUMBER(p≤9, s=0)INT32
NUMBER(p≤18, s=0)INT64
NUMBER(p≤9, s>0)FLOAT
NUMBER(p≤18, s>0), NUMBER(p>18, s)DOUBLE
NUMBER(p, s), DECIMAL(p, s), NUMERIC(p, s)Depends on precision and scale
NUMBER(38, s>0), INT, INTEGER, BIGINT, SMALLINT, TINYINT, BYTEINTDOUBLESnowflake maps INT types to NUMBER(38, 0), which Propel represents as a DOUBLE as it can have numbers larger than INT64. See Snowflake numeric types.
FLOAT, FLOAT4, FLOAT8, DOUBLE, DOUBLE PRECISION, REALDOUBLE
VARCHAR, CHAR, CHARACTER, STRING, TEXT, BINARY, VARBINARYSTRING
TIMESTRING
VARIANT, OBJECT, ARRAYJSON
GEOGRAPHY, GEOMETRYNot supported

Frequently Asked Questions