Iceberg DDL 操作
このドキュメントでは、StarRocksにおけるIcebergカタログのデータ定義言語(DDL)操作について説明します。これには、データベース、テーブル、およびビューの作成と管理が含まれます。
DDL操作を実行するには、適切な権限が必要です。権限の詳細については、権限を参照してください。
データベースの作成
Icebergカタログにデータベースを作成します。この機能はv3.1以降でサポートされています。
構文
CREATE DATABASE [IF NOT EXISTS] <database_name>
[PROPERTIES ("location" = "<prefix>://<path_to_database>/<database_name.db>/")]
パラメータ
location: データベースが作成されるファイルパスを指定します。HDFSとクラウドストレージの両方がサポートされています。指定しない場合、データベースはIcebergカタログのデフォルトファイルパスに作成されます。
prefixは使用するストレージシステムに基づいて異なります:
- HDFS:
hdfs - Google GCS:
gs - Azure Blob Storage (HTTP):
wasb - Azure Blob Storage (HTTPS):
wasbs - Azure Data Lake Storage Gen1:
adl - Azure Data Lake Storage Gen2 (HTTP):
abfs - Azure Data Lake Storage Gen2 (HTTPS):
abfss - AWS S3またはS3互換ストレージ:
s3
例
CREATE DATABASE iceberg_db
PROPERTIES ("location" = "s3://my_bucket/iceberg_db/");
データベースの削除
Icebergカタログから空のデータベースを削除します。この機能はv3.1以降でサポートされています。
空のデータベースのみを削除できます。データベースを削除しても、ストレージ上のファイルパスは削除されません。
構文
DROP DATABASE [IF EXISTS] <database_name>
例
DROP DATABASE iceberg_db;
テーブルの作成
Icebergデータベースにテーブルを作成します。この機能はv3.1以降でサポートされています。
構文
CREATE TABLE [IF NOT EXISTS] [database.]table_name
(
column_definition1[, column_definition2, ...],
partition_column_definition1, partition_column_definition2, ...
)
[partition_desc]
[ORDER BY sort_desc]
[PROPERTIES ("key" = "value", ...)]
[AS SELECT query]
パラメータ
column_definition
col_name col_type [COMMENT 'comment'] [DEFAULT default_value]
非パーティション列にはすべて NULL をデフォルト値として使用する必要があります。パーティション列は非パーティション列の後に定義する必要があり、NULL をデフォルト値として使用することはできません。
デフォルト値
v4.1以降、StarRocksはIcebergテーブルの列にデフォルト値を設定することをサポートし ています。この機能には、Icebergフォーマットバージョン3("format-version" = "3")が必要です。
用途:
- 書き込み時の補完: INSERT文を実行する際、列に値が指定されていない場合、システムは自動的にその列のデフォルト値を使用します。
- スキーマ進化時の補完: 既存のテーブルに新しい列を追加した後、古いデータファイル(新しい列を含まない)を読み取る際、システムは新しい列のデフォルト値を使用します。
構文:
col_name col_type DEFAULT default_value
要件:
- テーブルはIcebergフォーマットバージョン3(
"format-version" = "3")を使用する必要があります。 - 数値型(INT、BIGINT、FLOAT、DOUBLE)、BOOLEAN、DATE/TIMESTAMP型のデフォルト値は二重引用符で囲む必要があります。例:
DEFAULT "18"、DEFAULT "100.0"、DEFAULT "true"。 - 数値型(INT、BIGINT、FLOAT、DOUBLE)、BOOLEAN、STRING、DATE/TIMESTAMP型のデフォルト値は引用符で囲む必要があります。例:
DEFAULT "18"、DEFAULT "100.0"、DEFAULT "true"。
例:
- デフォルト値を持つテーブルを作成する:
CREATE TABLE user_info (
id INT,
name STRING,
age INT DEFAULT "18",
score DOUBLE DEFAULT "100.0",
status STRING DEFAULT 'active',
is_active BOOLEAN DEFAULT "true"
) PROPERTIES ("format-version" = "3");
- デフォルト値を持つ列を追加する:
ALTER TABLE user_info ADD COLUMN bonus DOUBLE DEFAULT "50.5";
- 列のデフォルト値を変更する:
ALTER TABLE user_info MODIFY COLUMN status STRING DEFAULT "inactive";
partition_desc
PARTITION BY (partition_expr[, partition_expr...])
各 partition_expr は以下のいずれかです:
column_name(識別変換)transform_expr(column_name)transform_expr(column_name, parameter)
StarRocksは、Apache Iceberg仕様で定義されたパーティション変換式をサポートしています。
パーティション列は、FLOAT、DOUBLE、DECIMAL、およびDATETIMEを除くすべてのデータ型をサポートしています。
ORDER BY (v4.0+)
Icebergテーブルのソートキーを指定します:
ORDER BY (column_name [ASC | DESC] [NULLS FIRST | NULLS LAST], ...)
PROPERTIES
主要なテーブルプロパティ:
location: テーブルのファイルパス。データベースレベルの場所を指定せずにAWS Glueを使用する場合に必要です。file_format: ファイル形式。parquetのみがサポートされています(デフォルト)。compression_codec: 圧縮アルゴリズム。オプション:SNAPPY、GZIP、ZSTD、LZ4(デフォルト:zstd)。