Snowflakeで Apache Iceberg™ テーブルを作成する

異なる カタログオプション のためにSnowflakeで Apache Iceberg™ テーブル を作成します。Icebergテーブルは CREATE ICEBERG TABLE コマンドで作成できます。

注釈

Snowflake管理

SnowflakeをカタログとしてIcebergテーブルを作成するには、 外部ボリューム と、Snowflakeがテーブルデータとメタデータを書き込めるベースの場所(外部ボリューム上のディレクトリ)を指定する必要があります。外部ボリュームを作成する手順については、 外部ボリュームの構成 をご参照ください。

テーブルの列を定義するには、Icebergデータ型を使用できます。詳細については、 Apache Iceberg™ テーブルのデータ型 をご参照ください。

次の例では、SnowflakeをIcebergカタログとしてIcebergテーブルを作成します。

CREATE OR REPLACE ICEBERG TABLE my_iceberg_table (
    boolean_col boolean,
    int_col int,
    long_col long,
    float_col float,
    double_col double,
    decimal_col decimal(10,5),
    string_col string,
    fixed_col fixed(10),
    binary_col binary,
    date_col date,
    time_col time,
    timestamp_ntz_col timestamp_ntz(6),
    timestamp_ltz_col timestamp_ltz(6)
  )
  CATALOG = 'SNOWFLAKE'
  EXTERNAL_VOLUME = 'my_ext_vol'
  BASE_LOCATION = 'my/relative/path/from/extvol';
Copy

注釈

あるいは、バリアント構文を使用します。詳細については、 CREATE TABLE ... AS SELECT および CREATE ICEBERG TABLE ... LIKE をご参照ください。

Snowflakeをカタログとして使用するテーブルを作成した後、次のようなアクションを実行できます。

詳細については、 Apache Iceberg™ テーブルの管理 をご参照ください。

外部カタログ

外部カタログを使用する、またはカタログをまったく使用しないIcebergテーブルを作成するには、 外部ボリュームカタログ統合 を指定する必要があります。外部のIcebergカタログを使用する場合は、追加のパラメーターを指定する必要がある場合もあります。例えば、AWS Glueをカタログとして使用する場合、カタログテーブル名を指定する必要があります。

外部カタログを使用するIcebergテーブルを作成すると、Snowflakeは初期メタデータのリフレッシュを実行します。また、 ALTER ICEBERG TABLE ... REFRESH コマンドを使用してテーブルメタデータを手動で更新し、メタデータを最新のテーブルの変更と同期させることもできます。詳細については、 テーブルのメタデータをリフレッシュする をご参照ください。

AWS Glue

重要

SnowflakeとGlueデータカタログ間の信頼関係を確立するには、 AWS Glueのカタログ統合を構成する必要があります。手順については、 AWS Glueのカタログ統合を設定する をご参照ください。

次の例は、 AWS Glueデータカタログを使用するIcebergテーブルを作成し、 AWS Glue(glueCatalogInt)のために構成されたカタログ統合の名前と、 CATALOG_TABLE_NAME プロパティの値を指定します。

CREATE ICEBERG TABLE myGlueTable
  EXTERNAL_VOLUME='glueCatalogVolume'
  CATALOG='glueCatalogInt'
  CATALOG_TABLE_NAME='myGlueTable';
Copy

AWS Glue をカタログとしてテーブルを作成した後、次のようなアクションを実行できます。

オブジェクトストレージ内のIcebergファイル

次の例では、外部クラウドストレージのIcebergメタデータからIcebergテーブルを作成し、外部ボリューム(METADATA_FILE_PATH)のテーブルメタデータへの相対パスを指定します。

CREATE ICEBERG TABLE myIcebergTable
  EXTERNAL_VOLUME='icebergMetadataVolume'
  CATALOG='icebergCatalogInt'
  METADATA_FILE_PATH='path/to/metadata/v1.metadata.json';
Copy

オブジェクトストレージ内のデルタファイル

以下のコマンド例では、オブジェクト・ストレージ内のDelta・テーブル・ファイルからIceberg・テーブルを作成しています。

この例では、Delta・テーブル・ファイルのクラウド・ロケーションに関連する外部ボリューム、 Delta用に構成されたカタログ統合、および必須パラメーター BASE_LOCATION の値を指定しています。

CREATE ICEBERG TABLE my_delta_iceberg_table
  CATALOG = delta_catalog_integration
  EXTERNAL_VOLUME = delta_external_volume
  BASE_LOCATION = 'relative/path/from/ext/vol/';
Copy

Deltaテーブルがパーティショニングスキームを使用している場合、Snowflakeは自動的にDeltaログからスキームを解釈します。

Apache Iceberg™ REST カタログ

以下の例では、リモートの Iceberg REST カタログ を使用するテーブルを作成しています。

CREATE OR REPLACE ICEBERG TABLE my_iceberg_table
  EXTERNAL_VOLUME = 'my_external_volume'
  CATALOG = 'my_rest_catalog_integration'
  CATALOG_TABLE_NAME = 'my_remote_table';
Copy