Snowflakeで管理されたテーブルを Snowflake Open Catalog と同期する

Apache Spark™などのサードパーティエンジンを使用してSnowflakeが管理する Apache Iceberg™ テーブルをクエリするには、テーブルを Snowflake Open Catalog と同期します。

このトピックでは、Snowflakeのカタログ統合と Open Catalog の外部カタログを使用して、Snowflakeが管理するIcebergテーブルを Snowflake Open Catalog と同期する方法について説明します。

ステップ1: 外部ボリュームを作成する

まだお持ちでない場合は、テーブルデータとメタデータを保存するクラウドストレージ場所へのアクセスを提供する外部ボリュームをSnowflakeで作成することから始めます。

ご利用のクラウドストレージサービスの手順に従ってください。

ステップ2: Open Catalog リソースを設定する

次に、このセクションの手順を実行して、 Open Catalog アカウントに外部カタログとサービス接続を作成します。

  1. カタログの作成 の手順に従って、 Open Catalog アカウントに外部カタログを作成します。外部カタログの以下の設定が構成されていることを確認します。

    Open Catalog はSnowflakeで管理されているテーブルをこの外部カタログに同期します。

  2. Snowflake用のサービス接続がまだない場合は、 サービス接続の構成 の手順に従って、 Open Catalog アカウントにSnowflakeエンジン用の接続を作成します。

  3. 外部カタログへのアクセスを許可する権限を持つ、外部カタログ用のカタログロールを構成します。手順については、 カタログへの権限の付与 を参照してください。

    カタログロールには、カタログ上で以下の権限が必要です。

    • TABLE_CREATE

    • TABLE_WRITE_PROPERTIES

    • TABLE_DROP

    • NAMESPACE_CREATE

    • NAMESPACE_DROP

    これらの権限をそれぞれカタログロールに付与するか、これらの権限を含む CATALOG_MANAGE_CONTENT 権限を付与することができます。詳しくは、 Snowflake Open Catalogのカタログ権限 をご覧ください。

  4. サービス接続のプリンシパルロールにカタログロールを添付します。これにより、サービス接続はカタログにアクセスできます。手順については、 プリンシパルロールへのカタログロールの付与 を参照してください。

ステップ3: Open Catalog のカタログ統合を作成する

CREATE CATALOG INTEGRATION (Snowflake Open Catalog) コマンドを使用して、 Open Catalog のカタログ統合を作成します。WAREHOUSE の場合は、 Open Catalog アカウントで構成した外部カタログの名前を指定します。

カタログ統合の作成に関するトラブルシューティングについては、 オープンカタログのカタログ統合が作成できない をご参照ください。

CREATE OR REPLACE CATALOG INTEGRATION my_open_catalog_int
  CATALOG_SOURCE = POLARIS
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE = 'myOpenCatalogNamespace'
  REST_CONFIG = (
    CATALOG_URI = 'https://myAccount.snowflakecomputing.com/polaris/api/catalog'
    WAREHOUSE = 'myOpenCatalogExternalCatalogName'
  )
  REST_AUTHENTICATION = (
    TYPE = OAUTH
    OAUTH_CLIENT_ID = 'myClientId'
    OAUTH_CLIENT_SECRET = 'myClientSecret'
    OAUTH_ALLOWED_SCOPES = ('PRINCIPAL_ROLE:ALL')
  )
  ENABLED = TRUE;
Copy

注釈

このカタログ統合を使用して、1つまたは複数のSnowflake管理テーブルを同期することができます。

ステップ4: Snowflake管理テーブルを作成する

CREATE ICEBERG TABLE (IcebergカタログとしてのSnowflake) コマンドを使用して、Snowflake管理のIcebergテーブルを作成します。

CATALOG_SYNC パラメーターには、 Open Catalog のカタログ統合名を指定します。

Snowflake 管理テーブルの作成に関する問題のトラブルシューティングについては、 Snowflake管理テーブルが作成できない をご参照ください。

CREATE OR REPLACE ICEBERG TABLE my_managed_iceberg_table (col1 INT)
  CATALOG = 'SNOWFLAKE'
  EXTERNAL_VOLUME = 'my_external_volume'
  BASE_LOCATION = 'my_managed_iceberg_table'
  CATALOG_SYNC = 'my_open_catalog_int';
Copy

Snowflakeでテーブルを変更すると、その変更は Open Catalog アカウントの外部カタログと自動的に同期されます。Apache Spark™のような他のエンジンは、 Open Catalog に接続することで、テーブルをクエリすることができます。