Prerequisites
- A Snowflake account with access to the database and tables you want to ingest.
- The Snowflake account identifier (e.g.,
myaccount.us-east-1). - Valid authentication credentials (username/password, OAuth token, JWT private key, etc.).
- Network access from RisingWave to your Snowflake instance.
Connecting to Snowflake
RisingWave supports loading data from Snowflake tables using theadbc_snowflake connector. This creates a refreshable table that periodically fetches the latest data from Snowflake.
Syntax
Automatic Schema InferenceColumn definitions are automatically inferred from the Snowflake table and should not be manually specified in the
CREATE TABLE statement. You must specify a primary key when creating a Snowflake table in RisingWave.Parameters
Unless specified otherwise, parameters are required.- If
refresh_interval_secis omitted, no automatic refresh is scheduled. RunREFRESH TABLEto load or refresh data. - When using JWT authentication (set
adbc_snowflake.auth_typetoauth_jwt), provide exactly one ofadbc_snowflake.jwt_private_key_pathandadbc_snowflake.jwt_private_key_pkcs8_value.
Authentication methods
The Snowflake connector supports multiple authentication methods:Username and password (default)
JWT authentication
OAuth authentication
Data type mapping
The following table shows the corresponding data types between Snowflake and RisingWave. For details on native RisingWave data types, see Overview of data types.Complete example
This example demonstrates how to create a refreshable table that loads data from a Snowflake table every hour.Step 1: Create the refreshable table
Step 2: Query the data
Step 3: Create materialized views
You can create materialized views based on the Snowflake data:Limitations and requirements
- Refresh mode: Only
FULL_RELOADmode is supported. Ifrefresh_interval_secis set, RisingWave refreshes on that schedule. If it is omitted, refresh manually withREFRESH TABLE. - Primary key: You must define a primary key when creating a Snowflake table in RisingWave.
- Schema inference: Column definitions are automatically inferred from the Snowflake table. Do not manually specify columns in the
CREATE TABLEstatement. - Feature flag: The Snowflake connector requires the
source-adbc_snowflakefeature to be enabled at compile time. This is enabled by default in official RisingWave builds. - Snapshot consistency: The connector uses Snowflake’s time travel feature when available to read data from a consistent point in time; when unavailable (for example, due to Snowflake retention settings), it falls back to reading current table data.
- Performance: For large tables, consider the refresh interval carefully to balance data freshness with query costs in Snowflake.
What’s next?
- Sink data to Snowflake - Learn how to write data from RisingWave back to Snowflake
- Work with Snowflake and Iceberg - Integrate Snowflake with Apache Iceberg catalogs
REFRESH TABLE- Manually refresh a Snowflake table whenrefresh_interval_secis not set