Snowflakeで Apache Iceberg™ テーブルを作成する¶
異なる カタログオプション のためにSnowflakeで Apache Iceberg™ テーブル を作成します。Icebergテーブルは CREATE ICEBERG TABLE コマンドで作成できます。
注釈
Icebergテーブルを作成するには、セッションの現在のウェアハウスとして指定された実行中のウェアハウスが必要です。Icebergテーブルの作成時に実行中のウェアハウスが指定されていないと、エラーが発生する場合があります。詳細については、 ウェアハウスでの作業 をご参照ください。
Snowflake Open Catalog で動作するIcebergテーブルを作成するには、 Snowflakeで Snowflake Open Catalog を使用して Apache Iceberg™ テーブルを使用する を参照してください。
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';
注釈
あるいは、バリアント構文を使用します。詳細については、 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';
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';
オブジェクトストレージ内のデルタファイル¶
以下のコマンド例では、オブジェクト・ストレージ内の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/';
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';