Snowflake Postgres用のカタログ統合の構成¶
Snowflake Postgresカタログ統合により、SnowflakeはSnowflake Postgresインスタンスによって管理されている Apache Iceberg™ テーブルにアクセスできるようになります。Snowflake Postgres用のカタログ統合を作成すると、Snowflakeは自動的にPostgresデータベース内のテーブルを検出し、読み取り専用のIcebergテーブルとして利用できるようにします。
Snowflake Postgresカタログ統合は、 ベンディングされた認証情報 を使用して、クラウドストレージ内のテーブルデータとメタデータにアクセスします。外部ボリューム を構成する、またはストレージ認証情報を個別に管理する必要はありません。
注釈
Snowflake Postgresカタログ統合は、現在 AWS でのみサポートされています。
前提条件¶
Snowflake Postgres機能が有効になっているSnowflakeアカウント。
READY 状態のPostgresインスタンス。Postgresインスタンスを作成するには、 CREATE POSTGRES INSTANCE をご参照ください。
カタログ統合を作成するロールには、以下の権限が必要です。
Postgresインスタンスに対する
USAGE。アカウントに対する
CREATE INTEGRATION。
考慮事項¶
Snowflake Postgresカタログ統合を使用する場合は、以下の点を考慮してください。
Snowflake Postgresカタログ統合は、常にベンディングされた認証情報を使用します。
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALSを設定する必要があります。EXTERNAL_VOLUME_CREDENTIALSモードはサポートされていません。REST_AUTHENTICATIONを指定する必要はありません。SnowflakeはPostgresインスタンスの認証を自動的に処理します。自動リフレッシュはメタデータポーリングを使用します。変更通知はサポートされていません。
テーブルは読み取り専用です。Postgres管理のIcebergテーブルへの書き込み操作はサポートされていません。
この機能は、バースト可能なPostgresインスタンスではサポートされていません。
この機能は AWS でのみサポートされています。
Snowflakeのカタログ統合を作成する¶
Snowflake Postgresのカタログ統合を作成するには、 CREATE CATALOG INTEGRATION (Snowflake Postgres) コマンドを使用します。
例:
詳細な構文とパラメーターの参照については、 CREATE CATALOG INTEGRATION (Snowflake Postgres) をご参照ください。
Icebergテーブルを作成する¶
カタログ統合を作成したら、Postgresインスタンスのテーブルを参照するIcebergテーブルを作成できます。Snowflake Postgresカタログ統合を使用してIcebergテーブルを作成する場合は、カタログ統合とPostgresデータベースに存在するテーブル名を指定します。
例:
条件:
CATALOG = '<catalog_integration_name>':カタログ統合の名前を指定します。必須です。CATALOG_TABLE_NAME = '<table_name>':Postgresデータベースに存在するテーブルの名前を指定します。必須です。CATALOG_NAMESPACE = '<schema_name>':(オプション)テーブルを含むPostgresスキーマを指定します。デフォルトはカタログ統合に設定されたCATALOG_NAMESPACE値です。CATALOG_NAME = '<database_name>':(オプション)テーブルを含むPostgresデータベースを指定します。デフォルトはカタログ統合に設定されたCATALOG_NAME値です。AUTO_REFRESH = TRUE:(オプション)自動メタデータ更新を有効にします。有効にすると、Snowflakeはメタデータの変更をカタログで定期的にポーリングし、テーブルを自動的にリフレッシュします。
注釈
Snowflake Postgresカタログ統合でIcebergテーブルを作成する場合に、EXTERNAL_VOLUME を指定する必要はありません。
カタログリンクデータベースの作成¶
個別のIcebergテーブルを作成する代わりに、Postgresデータベースからテーブルを自動的に検出して同期するカタログリンクデータベースを作成できます。カタログリンクのデータベースは、Postgresデータベースとの同期を保つために、対応するスキーマとIcebergテーブルをSnowflakeに作成します。
例:
条件:
CATALOG = <catalog_integration_name>:Snowflake Postgresカタログ統合の名前を指定します。必須です。カタログリンクのデータベースは、カタログ統合のCATALOG_NAMEで指定されたPostgresデータベースを同期します。ALLOWED_WRITE_OPERATIONS = NONE:Snowflake Postgresカタログリンクのデータベースに必要です。Snowflake Postgresテーブルは読み取り専用です。
カタログリンクのデータベースが作成されると、Snowflakeは自動的にPostgresデータベースから名前空間とテーブルを検出し、対応するスキーマとIcebergテーブルを作成します。詳細については、 Apache Iceberg™ テーブルにはカタログリンクデータベースを使用します をご参照ください。
Icebergテーブルをクエリする¶
Icebergテーブルまたはカタログリンクデータベースを作成した後、標準 SQL を使用してテーブルをクエリできます。
アクセス制御¶
カタログ統合所有者ロールには、Postgresインスタンスに対する USAGE が付与されている必要があります。Snowflakeは、カタログ統合を作成するときにこの権限をチェックします。
カタログ統合に対する USAGE を付与されている任意のロールは、Postgresインスタンスのテーブルを参照するIcebergテーブルを作成できます。Postgresインスタンスに対する追加の許可は必要ありません。このロールには、ターゲットデータベースとスキーマにテーブルを作成するための標準的なSnowflake権限も必要です。
たとえば、カタログ統合を使用してIcebergテーブルを作成する機能を別のロールに付与するには、次の内容を実行します。