Skip to main content
This guide describes how to ingest batch data from Snowflake tables into RisingWave using the ADBC (Arrow Database Connectivity) connector. This enables you to create refreshable tables that periodically pull data from Snowflake. Snowflake is a cloud-based data warehousing platform that allows for scalable and efficient data storage and analysis. For more information about Snowflake, see Snowflake official website.

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 the adbc_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_sec is omitted, no automatic refresh is scheduled. Run REFRESH TABLE to load or refresh data.
  • When using JWT authentication (set adbc_snowflake.auth_type to auth_jwt), provide exactly one of adbc_snowflake.jwt_private_key_path and adbc_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_RELOAD mode is supported. If refresh_interval_sec is set, RisingWave refreshes on that schedule. If it is omitted, refresh manually with REFRESH 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 TABLE statement.
  • Feature flag: The Snowflake connector requires the source-adbc_snowflake feature 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?