CREATE CATALOG INTEGRATION (Apache Iceberg™ REST)

オープンソースの Apache Iceberg™ REST OpenAPI 仕様 に準拠したリモートカタログで管理される Apache Iceberg™ テーブル 用の新しい カタログ統合 をアカウントに作成するか、既存のカタログ統合を置き換えます。

注釈

Snowflake Open Catalog の統合を作成するには、 CREATE CATALOG INTEGRATION (Snowflake Open Catalog) をご参照ください。

こちらもご参照ください。

ALTER CATALOG INTEGRATIONDROP CATALOG INTEGRATIONSHOW CATALOG INTEGRATIONSDESCRIBE CATALOG INTEGRATION

構文

CREATE [ OR REPLACE ] CATALOG INTEGRATION [ IF NOT EXISTS ] <name>
  CATALOG_SOURCE = ICEBERG_REST
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE = '<namespace>'
  REST_CONFIG = (
    restConfigParams
  )
  REST_AUTHENTICATION = (
    restAuthenticationParams
  )
  ENABLED = { TRUE | FALSE }
  [ REFRESH_INTERVAL_SECONDS = <value> ]
  [ COMMENT = '<string_literal>' ]
Copy

条件:

restConfigParams ::=

  CATALOG_URI = '<rest_api_endpoint_url>'
  PREFIX = '<prefix>'
  WAREHOUSE = '<warehouse_name>'
  CATALOG_API_TYPE = { PUBLIC | AWS_API_GATEWAY | AWS_PRIVATE_API_GATEWAY }
Copy

restAuthenticationParams は、認証方法によって以下のようになります。

OAuth

restAuthenticationParams (for OAuth) ::=

  TYPE = OAUTH
  OAUTH_TOKEN_URI = 'https://<token_server_uri>'
  OAUTH_CLIENT_ID = '<oauth_client_id>'
  OAUTH_CLIENT_SECRET = '<oauth_client_secret>'
  OAUTH_ALLOWED_SCOPES = ('<scope_1>', '<scope_2>')
Copy

ベアラー トークン

restAuthenticationParams (for Bearer token) ::=

  TYPE = BEARER
  BEARER_TOKEN = '<bearer_token>'
Copy

SigV4

restAuthenticationParams (for SigV4) ::=

  TYPE = SIGV4
  SIGV4_IAM_ROLE = '<iam_role_arn>'
  SIGV4_SIGNING_REGION = '<region>'
Copy

パラメーター

name

カタログ統合の識別子(名前)を指定する文字列。アカウント内で一意である必要があります。

また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

CATALOG_SOURCE = ICEBERG_REST

カタログソースが Apache Iceberg REST 仕様に準拠した REST カタログであることを指定します。

TABLE_FORMAT = ICEBERG

カタログが提供する表形式として ICEBERG を指定します。

CATALOG_NAMESPACE = 'namespace'

外部カタログの名前空間を指定します。Snowflakeは、このカタログ統合に関連付けたすべてのIcebergテーブルに対してこの名前空間を使います。

テーブルの作成時にテーブルレベルで名前空間を指定することで、この値をオーバーライドできます。

ENABLED = { TRUE | FALSE }

カタログ統合をIcebergテーブルで使用できるかどうかを指定します。

  • TRUE は、ユーザーがこの統合を参照する新しいIcebergテーブルを作成できるようにします。

  • FALSE は、ユーザーがこの統合を参照する新しいIcebergテーブルを作成できないようにします。

REFRESH_INTERVAL_SECONDS = value

自動リフレッシュ のメタデータ更新のために外部 Iceberg カタログをポーリングしようとする間に Snowflake が待機する秒数を指定します。

値:30から86400まで。

デフォルト: 30秒

COMMENT = 'string_literal'

統合のコメントを指定する文字列(リテラル)。

デフォルト: 値なし

REST 構成パラメーター (restConfigParams)

CATALOG_URI = 'rest_api_endpoint_url'

REST API 用のカタログのエンドポイント URL。

PREFIX

オプションで、すべての API ルートに付加するプレフィックスを指定します。

WAREHOUSE

オプションで、リモート・カタログ・サービスに要求するウェアハウスの場所または識別子を指定します。

CATALOG_API_TYPE = { PUBLIC | AWS_API_GATEWAY | AWS_PRIVATE_API_GATEWAY }

オプションで、カタログ API の接続タイプを指定します。

デフォルト: PUBLIC

REST 認証パラメーター (restAuthenticationParams)

OAuth

TYPE = OAUTH

Iceberg REST カタログへの接続に使用する Snowflake の認証タイプとして OAuth を指定します。

OAUTH_TOKEN_URI = token_server_uri

サードパーティIDプロバイダーの任意 URL。指定しない場合、Snowflake はリモートカタログプロバイダーが OAuth ID プロバイダーであると仮定します。

OAUTH_CLIENT_ID = oauth_client_id

あなたの OAuth2 クライアント ID。

OAUTH_CLIENT_SECRET = oauth_client_secret

あなたの OAuth2 クライアントシークレット。

OAUTH_ALLOWED_SCOPES = ( 'scope_1', 'scope_2' )

OAuth トークンのスコープ。Iceberg REST API 仕様にはスコープが1つしか含まれていませんが、カタログは実装において複数のスコープをサポートすることができます。

ベアラートークン

TYPE = BEARER

Snowflake が Iceberg REST カタログに接続する際に使用する認証タイプとして、ベアラートークンを指定します。

BEARER_TOKEN = bearer_token

ID プロバイダーのベアラートークン。個人アクセストークン(PAT)を指定することもできます。

SigV4

TYPE = SIGV4

Iceberg REST カタログに接続するために Snowflake が使用する認証タイプとして、Signature Version 4 を指定します。

SIGV4_IAM_ROLE = 'iam_role_arn'

API Gatewayで REST API にアクセスする権限を持つ IAM ロールのAmazon Resource Name (ARN) を指定します。

SIGV4_SIGNING_REGION = 'region'

オプションで、 API Gatewayの API に関連する AWS Region を指定します。このパラメーターを指定しない場合、SnowflakeはSnowflakeアカウントがデプロイされているリージョンを使用します。

アクセス制御の要件

この SQL コマンドの実行に使用される ロール には、少なくとも次の 権限 が必要です。

権限

オブジェクト

メモ

CREATE INTEGRATION

アカウント

Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed.

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。

使用上の注意

  • カタログ統合は、外部 Iceberg カタログへの読み取り専用アクセスを提供します。

  • 既存のカタログ統合は変更できません。代わりに CREATE OR REPLACE CATALOG INTEGRATION ステートメントを使用してください。

  • 1つ以上の Apache Iceberg™ テーブルがカタログ統合に関連付けられている場合、カタログ統合をドロップしたり置き換えたりすることはできません。

    カタログ統合に依存するテーブルを表示するには、 SHOW ICEBERG TABLES コマンドと、 catalog_name 列でフィルターする RESULT_SCAN を使用したクエリを使用できます。

    注釈

    列識別子(catalog_name)は大文字と小文字を区別します。SHOW ICEBERG TABLES 出力に表示されるのと同じように、列識別子を指定します。

    例:

    SHOW ICEBERG TABLES;
    
    SELECT * FROM TABLE(
      RESULT_SCAN(
          LAST_QUERY_ID()
        )
      )
      WHERE "catalog_name" = 'my_catalog_integration_1';
    
    Copy
  • メタデータについて:

    注意

    Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。

  • CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。

以下の例では、 OAuth を使用して Tabular に接続する REST カタログ統合を作成しています。

CREATE OR REPLACE CATALOG INTEGRATION tabular_catalog_int
  CATALOG_SOURCE = ICEBERG_REST
  TABLE_FORMAT = ICEBERG
  CATALOG_NAMESPACE = 'default'
  REST_CONFIG = (
    CATALOG_URI = 'https://api.tabular.io/ws'
    WAREHOUSE = '<tabular_warehouse_name>'
  )
  REST_AUTHENTICATION = (
    TYPE = OAUTH
    OAUTH_TOKEN_URI = 'https://api.tabular.io/ws/v1/oauth/tokens'
    OAUTH_CLIENT_ID = '<oauth_client_id>'
    OAUTH_CLIENT_SECRET = '<oauth_client_secret>'
    OAUTH_ALLOWED_SCOPES = ('catalog')
  )
  ENABLED = TRUE;
Copy