テーブルバケットの指定した名前空間に Iceberg テーブルを作成します。
注意事項
-
テーブル名の長さは 1~255 文字である必要があります。使用できる文字は小文字、数字、およびアンダースコア (_) のみです。アンダースコアで始めたり終えたりすることはできません。また、oss、acs、aliyun、alibaba、aws で始めることはできません。
-
テーブルを作成する前に、作成先のテーブルバケットと名前空間が存在することを確認してください。
アクセス許可
|
API |
アクション |
説明 |
|
CreateTable |
oss:CreateTable |
テーブルを作成します。 |
|
oss:PutTableData |
データバケットに書き込みます。metadata パラメーターを指定した場合に必要です。 |
|
|
oss:PutTableEncryption |
encryptionConfiguration パラメーターを指定した場合に必要です。 |
リクエスト構文
PUT /tables/{tableBucketARN}/{namespace} HTTP/1.1
Content-type: application/json
Host: cn-hangzhou.oss-tables.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
{
"name": "string",
"format": "string",
"encryptionConfiguration": {
"sseAlgorithm": "string",
"kmsKeyArn": "string"
},
"metadata": {
"iceberg": {
"schema": {
"fields": [
{
"id": number,
"name": "string",
"type": "string",
"required": boolean
}
]
},
"partitionSpec": {
"specId": number,
"fields": [
{
"sourceId": number,
"transform": "string",
"name": "string"
}
]
},
"writeOrder": {
"orderId": number,
"fields": [
{
"sourceId": number,
"transform": "string",
"direction": "string",
"nullOrder": "string"
}
]
},
"properties": {
"string": "string"
}
}
}
}
パラメーター
|
パラメーター |
タイプ |
必須 |
例 |
説明 |
|
tableBucketARN |
文字列 |
はい |
acs:osstables:cn-hangzhou:1234567890:bucket/my-table-bucket |
URI で指定するテーブルバケットの ARN。フォーマット: |
|
namespace |
文字列 |
はい |
my_namespace |
テーブルを含む名前空間。URI で指定します。 |
|
name |
文字列 |
はい |
my_table |
テーブル名。名前空間内で一意である必要があり、長さは 1 ~ 255 文字です。使用できる文字は、小文字、数字、アンダースコア (_) のみです。アンダースコアで開始または終了したり、oss、acs、aliyun、alibaba、または aws で開始したりすることはできません。 |
|
format |
文字列 |
はい |
ICEBERG |
テーブルのフォーマット。 |
|
encryptionConfiguration |
オブジェクト |
いいえ |
- |
サーバー側の暗号化設定。省略した場合、テーブルはテーブルバケットから暗号化を継承します。子ノード: |
|
sseAlgorithm |
文字列 |
はい ( |
AES256 |
暗号化アルゴリズム。 |
|
kmsKeyArn |
文字列 |
いいえ |
acs:kms:cn-hangzhou:1234567890:key/key-id |
KMS キーの ARN。現在のバージョンではサポートされていません。空のままにする必要があります。親ノード: |
|
metadata |
オブジェクト |
いいえ |
- |
Iceberg テーブルのメタデータ。スキーマ、パーティショニングルール、書き込み順序、プロパティを含みます。子ノード: |
|
iceberg |
オブジェクト |
はい ( |
- |
Iceberg テーブルのメタデータ。親ノード: |
|
schema |
オブジェクト |
いいえ |
- |
Iceberg テーブルのスキーマ定義。親ノード: |
|
fields |
配列 |
はい ( |
- |
列定義。各要素は 1 つの列を記述します。
親ノード: |
|
partitionSpec |
オブジェクト |
いいえ |
- |
テーブルのパーティション仕様。親ノード:
|
|
fields |
配列 |
親ノード: |
||
|
writeOrder |
オブジェクト |
いいえ |
- |
書き込みの物理的なソート順。親ノード:
|
|
fields |
配列 |
親ノード: |
||
|
properties |
オブジェクト |
いいえ |
- |
キーバリュー形式の Iceberg テーブルプロパティ。親ノード: |
応答パラメーター
|
パラメーター |
タイプ |
例 |
説明 |
|
tableARN |
文字列 |
acs:osstables:cn-hangzhou:1234567890:bucket/my-table-bucket/table/table-id |
作成されたテーブルの ARN。フォーマット: |
|
versionToken |
文字列 |
abc123def456 |
楽観的ロック用のバージョン トークン。 |
例
例 1:スキーマを持つテーブル
id と data の 2 つのフィールドからなるスキーマを持つテーブルを作成します。
リクエストの例
PUT /tables/acs%3Aosstables%3Acn-hangzhou%3A1234567890%3Abucket%2Fmy-table-bucket/my_namespace HTTP/1.1
Content-type: application/json
Host: cn-hangzhou.oss-tables.aliyuncs.com
Date: Thu, 10 Apr 2025 08:00:00 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/osstables/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c****
{
"name": "basic_table",
"format": "ICEBERG",
"metadata": {
"iceberg": {
"schema": {
"fields": [
{"id": 1, "name": "id", "type": "long", "required": true},
{"id": 2, "name": "data", "type": "string"}
]
}
}
}
}
例 2:アイデンティティパーティションを持つテーブル
region フィールドにアイデンティティパーティションを持つテーブルを作成します。
リクエストの例
PUT /tables/acs%3Aosstables%3Acn-hangzhou%3A1234567890%3Abucket%2Fmy-table-bucket/my_namespace HTTP/1.1
Content-type: application/json
Host: cn-hangzhou.oss-tables.aliyuncs.com
Date: Thu, 10 Apr 2025 08:00:00 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/osstables/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c****
{
"format": "ICEBERG",
"metadata": {
"iceberg": {
"schema": {
"fields": [
{"id": 1, "name": "id", "type": "long", "required": true},
{"id": 2, "name": "region", "type": "string"},
{"id": 3, "name": "ts", "type": "timestamptz"}
]
},
"partitionSpec": {
"specId": 0,
"fields": [
{"sourceId": 2, "transform": "identity", "name": "region"}
]
}
}
},
"name": "partitioned_table"
}
例 3:時間パーティションとバケットパーティションを持つテーブル
day パーティションとバケットパーティションを持つテーブルを作成します。
リクエストの例
PUT /tables/acs%3Aosstables%3Acn-hangzhou%3A1234567890%3Abucket%2Fmy-table-bucket/my_namespace HTTP/1.1
Content-type: application/json
Host: cn-hangzhou.oss-tables.aliyuncs.com
Date: Thu, 10 Apr 2025 08:00:00 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/osstables/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c****
{
"format": "ICEBERG",
"metadata": {
"iceberg": {
"schema": {
"fields": [
{"id": 1, "name": "id", "type": "long", "required": true},
{"id": 2, "name": "data", "type": "string"},
{"id": 3, "name": "ts", "type": "timestamptz"}
]
},
"partitionSpec": {
"fields": [
{"sourceId": 3, "transform": "day", "name": "ts_day"},
{"sourceId": 1, "transform": "bucket[256]", "name": "id_bucket"}
]
}
}
},
"name": "multi_partition_table"
}
例 4:書き込み順序を持つテーブル
書き込みを ts の降順、次に id の昇順でソートするテーブルを作成します。
リクエストの例
PUT /tables/acs%3Aosstables%3Acn-hangzhou%3A1234567890%3Abucket%2Fmy-table-bucket/my_namespace HTTP/1.1
Content-type: application/json
Host: cn-hangzhou.oss-tables.aliyuncs.com
Date: Thu, 10 Apr 2025 08:00:00 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/osstables/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c****
{
"format": "ICEBERG",
"metadata": {
"iceberg": {
"schema": {
"fields": [
{"id": 1, "name": "id", "type": "long", "required": true},
{"id": 2, "name": "ts", "type": "timestamptz"},
{"id": 3, "name": "category", "type": "string"}
]
},
"writeOrder": {
"orderId": 1,
"fields": [
{"sourceId": 2, "transform": "identity", "direction": "desc", "nullOrder": "nulls-last"},
{"sourceId": 1, "transform": "identity", "direction": "asc", "nullOrder": "nulls-first"}
]
}
}
},
"name": "sorted_table"
}
例 5:指定されたプロパティを持つテーブル
Iceberg V2 フォーマット、デフォルトの書き込みフォーマット、ターゲットファイルサイズといったプロパティを持つテーブルを作成します。
リクエストの例
PUT /tables/acs%3Aosstables%3Acn-hangzhou%3A1234567890%3Abucket%2Fmy-table-bucket/my_namespace HTTP/1.1
Content-type: application/json
Host: cn-hangzhou.oss-tables.aliyuncs.com
Date: Thu, 10 Apr 2025 08:00:00 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/osstables/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c****
{
"name": "v2_table",
"format": "ICEBERG",
"metadata": {
"iceberg": {
"schema": {
"fields": [
{"id": 1, "name": "id", "type": "long", "required": true},
{"id": 2, "name": "name", "type": "string"}
]
},
"properties": {
"format-version": "2",
"write.format.default": "parquet",
"write.target-file-size-bytes": "134217728"
}
}
}
}
例 6:完全な設定を持つテーブル
スキーマ、パーティションスペック、書き込み順序、プロパティ、そして暗号化を持つテーブルを作成します。
リクエストの例
PUT /tables/acs%3Aosstables%3Acn-hangzhou%3A1234567890%3Abucket%2Fmy-table-bucket/my_namespace HTTP/1.1
Content-type: application/json
Host: cn-hangzhou.oss-tables.aliyuncs.com
Date: Thu, 10 Apr 2025 08:00:00 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/osstables/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c****
{
"encryptionConfiguration": {
"sseAlgorithm": "AES256"
},
"format": "ICEBERG",
"metadata": {
"iceberg": {
"schema": {
"fields": [
{"id": 1, "name": "id", "type": "long", "required": true},
{"id": 2, "name": "ts", "type": "timestamptz", "required": true},
{"id": 3, "name": "region", "type": "string"},
{"id": 4, "name": "amount", "type": "double"}
]
},
"partitionSpec": {
"specId": 0,
"fields": [
{"sourceId": 2, "transform": "day", "name": "ts_day"},
{"sourceId": 3, "transform": "identity", "name": "region"}
]
},
"writeOrder": {
"orderId": 1,
"fields": [
{"sourceId": 2, "transform": "identity", "direction": "desc", "nullOrder": "nulls-last"},
{"sourceId": 1, "transform": "identity", "direction": "asc", "nullOrder": "nulls-first"}
]
},
"properties": {
"format-version": "2",
"write.format.default": "parquet"
}
}
},
"name": "full_featured_table"
}
レスポンスの例
HTTP/1.1 200 OK
Server: AliyunOSS
x-oss-request-id: 5C06A3B67B8B5A3DA422****
x-oss-server-time: 3
Content-Type: application/json
{
"tableARN": "acs:osstables:cn-hangzhou:1234567890:bucket/my-table-bucket/table/table_id",
"versionToken": "aaabbb"
}
スキーマのフィールド型
プリミティブ型
Iceberg スキーマでサポートされているプリミティブ型は次のとおりです:
|
型 |
最小バージョン |
説明 |
値の例 |
|
boolean |
V1 |
ブール値。 |
true |
|
int |
V1 |
32 ビットの符号付き整数。 |
42 |
|
long |
V1 |
64 ビットの符号付き整数。 |
1234567890 |
|
float |
V1 |
32 ビットの IEEE 754 浮動小数点数。 |
3.14 |
|
double |
V1 |
64 ビットの IEEE 754 浮動小数点数。 |
3.141592653589793 |
|
decimal(P,S) |
V1 |
固定精度の小数値。P は精度 (総桁数、最大 38 桁) 、S はスケール (小数点以下の桁数) を表します。 |
decimal(10,2) → 12345678.90 |
|
date |
V1 |
時刻やタイムゾーンを含まないカレンダー日付。 |
2025-04-10 |
|
time |
V1 |
日付やタイムゾーンを含まない、マイクロ秒精度の時刻。 |
14:30:00.000000 |
|
timestamp |
V1 |
タイムゾーンを含まない、マイクロ秒精度のタイムスタンプ。 |
2025-04-10T14:30:00.000000 |
|
timestamptz |
V1 |
タイムゾーン情報を含み、UTC で格納されるマイクロ秒精度のタイムスタンプ。 |
2025-04-10T14:30:00.000000+00:00 |
|
timestamp_ns |
V3 |
タイムゾーンを含まない、ナノ秒精度のタイムスタンプ。 |
2025-04-10T14:30:00.000000000 |
|
timestamptz_ns |
V3 |
タイムゾーン情報を含み、UTC で格納されるナノ秒精度のタイムスタンプ。 |
2025-04-10T14:30:00.000000000+00:00 |
|
string |
V1 |
可変長の UTF-8 文字列。 |
hello world |
|
uuid |
V1 |
128 ビットの汎用一意識別子 (UUID)。 |
550e8400-e29b-41d4-a716-446655440000 |
|
fixed[L] |
V1 |
固定長のバイト配列。L はバイト単位の長さを表します。 |
fixed[16] |
|
binary |
V1 |
可変長のバイト配列。 |
- |
V3 タイプ (timestamp_ns、timestamptz_ns、unknown、geometry、geography) を使用するには、Iceberg フォーマットバージョン 3 が必要です。OSS Tables はデフォルトで V2 を使用します。V3 タイプを使用するには、テーブルプロパティで "format-version": "3" を設定してください。
変換と互換性のあるソース型
|
変換 |
フォーマット |
説明 |
互換性のあるソース型 |
|
identity |
identity |
Identity パーティション。ソースフィールドの生の値でパーティション分割します。 |
すべてのプリミティブ型 |
|
year |
year |
ソースの日付またはタイムスタンプから年を抽出してパーティション分割します。 |
date, timestamp, timestamptz, timestamp_ns, timestamptz_ns |
|
month |
month |
ソースの日付またはタイムスタンプから年と月を抽出してパーティション分割します。 |
date, timestamp, timestamptz, timestamp_ns, timestamptz_ns |
|
day |
day |
ソースの日付またはタイムスタンプから年、月、日を抽出してパーティション分割します。 |
date, timestamp, timestamptz, timestamp_ns, timestamptz_ns |
|
hour |
hour |
ソースのタイムスタンプから年、月、日、時を抽出してパーティション分割します。 |
timestamp, timestamptz, timestamp_ns, timestamptz_ns |
|
bucket[N] |
bucket[N] |
ハッシュバケット化。ソースフィールドの値をハッシュ化し、剰余演算を用いてデータを N 個のバケットに分割します。N は正の整数である必要があります。 |
int, long, decimal, date, time, timestamp, timestamptz, timestamp_ns, timestamptz_ns, string, uuid, fixed[L], binary |
|
truncate[N] |
truncate[N] |
Truncate パーティション。整数値を幅 N に切り捨てるか、文字列を長さ N 文字に切り詰めます。N は正の整数である必要があります。 |
int, long, decimal, string, binary |
|
void |
void |
Void パーティション。すべての値を null にマッピングします。通常、パーティションの変遷履歴を保持しつつ、パーティションフィールドを削除する目的で使用します。 |
すべての型 |
SDK
CreateTable は、以下の SDK で利用できます。
ossutil CLI
CreateTable に対応する ossutil コマンドは、create-table です。
エラーコード
|
エラーコード |
HTTP ステータスコード |
説明 |
|
BadRequestException |
400 |
リクエストが無効、または不正な形式です。 |
|
InvalidTableName |
400 |
無効なテーブル名です。テーブル名は 1 文字から 255 文字までの長さで、小文字、数字、およびアンダースコア (_) のみを含めることができます。アンダースコアで開始または終了することはできません。また、oss、acs、aliyun、alibaba、または aws で開始することはできません。 |
|
ForbiddenException |
403 |
呼び出し元にはこのリクエストを実行する権限がありません。 |
|
NotFoundException |
404 |
リクエストされたリソースが存在しません。 |
|
ConflictException |
409 |
リクエストが以前の書き込み操作と競合しています。 |