以下示例展示如何使用 Snowflake ↗ 连接到 Basin Catalog,并以只读方式查询数据。
- 注册 Cloudflare 账户 ↗。
- 创建 R2 存储桶并启用数据目录。
- 创建 R2 API 令牌,并授予 R2 和数据目录权限。
- 拥有 Snowflake ↗ 账户,并具备创建 external volume 和 catalog integration 的必要权限。
在 Snowflake SQL worksheet ↗ 或 notebook ↗ 中运行以下命令:
-- Create a database if needed to organize your external data
CREATE DATABASE IF NOT EXISTS r2_example_db;
-- Create an external volume pointing to your R2 bucket
CREATE OR REPLACE EXTERNAL VOLUME ext_vol_r2
STORAGE_LOCATIONS = (
(
NAME = 'my_r2_storage_location'
STORAGE_PROVIDER = 'S3COMPAT'
STORAGE_BASE_URL = 's3compat://<bucket-name>'
CREDENTIALS = (
AWS_KEY_ID = '<access_key>'
AWS_SECRET_KEY = '<secret_access_key>'
)
STORAGE_ENDPOINT = '<account_id>.r2.cloudflarestorage.com'
)
)
ALLOW_WRITES = FALSE;
-- Create a catalog integration for Basin Catalog (read-only)
CREATE OR REPLACE CATALOG INTEGRATION r2_data_catalog
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'default'
REST_CONFIG = (
CATALOG_URI = '<catalog_uri>'
CATALOG_NAME = '<warehouse_name>'
)
REST_AUTHENTICATION = (
TYPE = BEARER
BEARER_TOKEN = '<token>'
)
ENABLED = TRUE;
-- Create an Apache Iceberg table in your selected Snowflake database
CREATE ICEBERG TABLE my_iceberg_table
CATALOG = 'r2_data_catalog'
EXTERNAL_VOLUME = 'ext_vol_r2'
CATALOG_TABLE_NAME = 'my_table'; -- Name of existing table in your R2 data catalog
-- Query your Iceberg table
SELECT * FROM my_iceberg_table;