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;
Copy

ステップ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';
Copy

オプションとして、 AUTO_REFRESH = TRUE を指定することで、テーブルメタデータの自動リフレッシュを有効にすることができます。詳細については、 Apache Iceberg™ テーブルの自動リフレッシュ をご参照ください。

注釈

リモート・カタログのテーブルまたは名前空間のリストを取得するには、以下の関数を使用します。

ステップ4: Snowflakeを使用してテーブルをクエリする

これで、Snowflakeを使用して、 Open Catalog のテーブルをクエリできるようになりました。クエリ結果を他のSnowflakeテーブルと結合することもできます。

SELECT id, date
  FROM open_catalog_iceberg_table
  LIMIT 10;
Copy