Snowflakeを使用して Snowflake Open Catalog 内のテーブルをクエリする¶
Snowflake Open Catalog に登録されたテーブルにSnowflakeを使用してクエリするには、 外部カタログ を使用する Apache Iceberg™ テーブルを作成します。
このテーブルは Snowflake Open Catalog 内のIcebergテーブルを表し、読み取り専用アクセスを提供します。
前提条件¶
始める前に、以下のものが必要です。
Open Catalog に登録されているIcebergテーブル。
Snowflakeが Open Catalog に接続するために使用できるサービス接続。ロールと権限を設定した既存のサービス接続を使用するか、Snowflake用の サービス接続を構成 できます。新しいサービス接続を設定する場合は、そのアクセス制御も設定する必要があります。
ステップ1: Snowflakeで外部ボリュームを作成する¶
まだお持ちでない場合は、テーブルデータとメタデータを保存するクラウドストレージ場所へのアクセスを提供する外部ボリュームをSnowflakeで作成することから始めます。
ご利用のクラウドストレージサービスの手順に従ってください。
ステップ2: Open Catalog のカタログ統合を作成する¶
次に、 CREATE CATALOG INTEGRATION コマンドを使用して、 OAuth を使用して、サービス接続認証情報を使用して Open Catalog に接続するカタログ統合をSnowflakeで作成します。
CREATE OR REPLACE CATALOG INTEGRATION open_catalog_int
CATALOG_SOURCE = POLARIS
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE= 'myOpenCatalogNamespace'
REST_CONFIG = (
CATALOG_URI ='https://my_account.snowflakecomputing.com/polaris/api/catalog'
WAREHOUSE = 'myOpenCatalogName'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_CLIENT_ID = 'my-client-id'
OAUTH_CLIENT_SECRET = 'my-client-secret'
OAUTH_ALLOWED_SCOPES = ( 'PRINCIPAL_ROLE:ALL' )
)
ENABLED = TRUE;
ステップ3: 外部管理テーブルを作成する¶
以前に構成した外部ボリュームとカタログ統合を使用して、SnowflakeでIcebergテーブルを作成します。
CATALOG_TABLE_NAME には、 Open Catalog に表示されているテーブル名を指定します。
CREATE ICEBERG TABLE open_catalog_iceberg_table
CATALOG = 'open_catalog_int'
EXTERNAL_VOLUME = 'my_external_volume'
CATALOG_TABLE_NAME = 'my_iceberg_table';
オプションとして、 AUTO_REFRESH = TRUE
を指定することで、テーブルメタデータの自動リフレッシュを有効にすることができます。詳細については、 Apache Iceberg™ テーブルの自動リフレッシュ をご参照ください。
注釈
リモート・カタログのテーブルまたは名前空間のリストを取得するには、以下の関数を使用します。
ステップ4: Snowflakeを使用してテーブルをクエリする¶
これで、Snowflakeを使用して、 Open Catalog のテーブルをクエリできるようになりました。クエリ結果を他のSnowflakeテーブルと結合することもできます。
SELECT id, date
FROM open_catalog_iceberg_table
LIMIT 10;