Panggil API CreateTable untuk membuat tabel Iceberg di namespace bucket tabel tertentu.
Izin
API | Tindakan | Deskripsi |
CreateTable | oss:CreateTable | Izin yang diperlukan untuk membuat tabel. |
oss:PutTableData | Diperlukan untuk menulis ke bucket data jika parameter metadata ditentukan. | |
oss:PutTableEncryption | Diperlukan saat parameter encryptionConfiguration ditentukan. |
Sintaksis permintaan
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"
}
}
}
}Parameter
Parameter | Tipe | Wajib | Contoh | Deskripsi |
tableBucketARN | string | Ya | acs:osstables:cn-hangzhou:1234567890:bucket/my-table-bucket | ARN bucket tabel. Parameter ini terletak di URI dan memiliki format |
namespace | string | Ya | my_namespace | Nama namespace yang berisi tabel. Parameter ini terletak di URI. |
name | string | Ya | my_table | Nama tabel. Nama ini harus unik dalam namespace, terdiri dari 1 hingga 255 karakter, hanya boleh berisi huruf kecil, angka, dan garis bawah (_), serta tidak boleh dimulai atau diakhiri dengan garis bawah. |
format | string | Ya | ICEBERG | Format tabel. Hanya |
encryptionConfiguration | object | Tidak | - | Konfigurasi enkripsi sisi server untuk tabel. Jika parameter ini tidak ditentukan, tabel akan mewarisi konfigurasi enkripsi dari bucket tabel. Node anak: |
sseAlgorithm | string | Ya, jika | AES256 | Algoritma enkripsi. Hanya |
kmsKeyArn | string | Tidak | acs:kms:cn-hangzhou:1234567890:key/key-id | ARN kunci KMS. Parameter ini tidak didukung pada versi saat ini dan harus dibiarkan kosong. Node induk: |
metadata | object | Tidak | - | Konfigurasi metadata untuk tabel. Termasuk skema, aturan partisi, urutan penulisan, dan properti tabel Iceberg. Node anak: |
iceberg | object | Ya, jika | - | Konfigurasi metadata untuk tabel Iceberg. Node induk: |
schema | object | Tidak | - | Definisi skema tabel Iceberg, yang menjelaskan kolom-kolom tabel. Node induk: |
fields | array | Ya, jika | - | Array definisi bidang untuk skema. Setiap elemen menjelaskan properti suatu kolom:
Node induk: |
partitionSpec | object | Tidak | - | Menentukan aturan partisi untuk tabel. Node induk:
|
fields | array |
Node induk: | ||
writeOrder | object | Tidak | - | Menentukan urutan pengurutan fisik data selama penulisan. Node induk:
|
fields | array |
Node induk: | ||
properties | object | Tidak | - | Properti konfigurasi untuk tabel Iceberg, dalam format pasangan kunci-nilai. Node induk adalah iceberg. Properti umum meliputi: |
Parameter respons
Parameter | Tipe | Contoh | Deskripsi |
tableARN | string | acs:osstables:cn-hangzhou:1234567890:bucket/my-table-bucket/table/table-id | ARN tabel yang dibuat, dengan format |
versionToken | string | abc123def456 | Token versi untuk tabel, digunakan untuk kunci optimis. |
Contoh
Contoh 1: Tabel dengan skema
Contoh ini membuat tabel dasar dengan skema yang mencakup dua bidang: id dan data.
Contoh permintaan
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"}
]
}
}
}
}Contoh 2: Tabel dengan partisi identitas
Contoh ini membuat tabel dengan partisi identitas pada bidang region.
Contoh permintaan
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"
}
Contoh 3: Tabel dengan partisi waktu dan bucket
Contoh ini membuat tabel dengan partisi day berdasarkan waktu dan partisi bucket.
Contoh permintaan
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"
}
Contoh 4: Tabel dengan urutan penulisan
Contoh ini membuat tabel dengan urutan penulisan yang ditentukan, mengurutkan data berdasarkan bidang ts secara menurun dan bidang id secara menaik.
Contoh permintaan
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"
}
Contoh 5: Tabel dengan properti yang ditentukan
Contoh ini membuat tabel dengan properti khusus, termasuk pengaturan versi format Iceberg ke V2, format file penulisan default, dan ukuran target file.
Contoh permintaan
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"
}
}
}
}Contoh 6: Tabel dengan konfigurasi lengkap
Contoh ini membuat tabel dengan skema, spesifikasi partisi, urutan penulisan, properti tabel, dan konfigurasi enkripsi.
Contoh permintaan
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"
}
Contoh respons
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"
}Tipe bidang skema
Tipe primitif
Tabel berikut mencantumkan tipe primitif yang didukung oleh skema Iceberg.
Jenis | Versi minimum | Deskripsi | Nilai contoh |
boolean | V1 | Nilai boolean. | true |
int | V1 | Bilangan bulat bertanda 32-bit. | 42 |
long | V1 | Bilangan bulat bertanda 64-bit. | 1234567890 |
float | V1 | Bilangan titik mengambang IEEE 754 32-bit. | 3.14 |
double | V1 | Bilangan titik mengambang IEEE 754 64-bit. | 3.141592653589793 |
decimal(P,S) | V1 | Bilangan desimal presisi tetap, di mana P adalah presisi (jumlah total digit, maksimal 38) dan S adalah skala (jumlah digit di sebelah kanan titik desimal). | decimal(10,2) → 12345678.90 |
date | V1 | Tanggal kalender tanpa waktu atau zona waktu. | 2025-04-10 |
time | V1 | Waktu dalam sehari tanpa tanggal atau zona waktu, dengan presisi mikrodetik. | 14:30:00.000000 |
timestamp | V1 | Timestamp tanpa zona waktu, dengan presisi mikrodetik. | 2025-04-10T14:30:00.000000 |
timestamptz | V1 | Timestamp dengan informasi zona waktu, disimpan dalam UTC dengan presisi mikrodetik. | 2025-04-10T14:30:00.000000+00:00 |
timestamp_ns | V3 | Timestamp tanpa zona waktu, dengan presisi nanodetik. | 2025-04-10T14:30:00.000000000 |
timestamptz_ns | V3 | Timestamp dengan informasi zona waktu, disimpan dalam UTC dengan presisi nanodetik. | 2025-04-10T14:30:00.000000000+00:00 |
string | V1 | String UTF-8 dengan panjang variabel. | hello world |
uuid | V1 | Identifier unik universal 128-bit. | 550e8400-e29b-41d4-a716-446655440000 |
fixed[L] | V1 | Array byte dengan panjang tetap, di mana L adalah panjang dalam byte. | fixed[16] |
binary | V1 | Array byte dengan panjang variabel. | - |
Catatan tentang batasan versi: Tipe yang ditandai sebagai V3—termasuk timestamp_ns, timestamptz_ns, unknown, geometry, dan geography—hanya didukung jika "format-version" Iceberg diatur ke 3. OSS Tables menggunakan V2 secara default. Untuk menggunakan tipe V3, Anda harus menentukan "format-version": "3" dalam properti tabel.
Tipe sumber yang kompatibel untuk transformasi
Transform | Format | Deskripsi | Tipe sumber yang kompatibel |
identity | identity | Partisi identitas. Membagi berdasarkan nilai mentah bidang sumber. | Semua tipe primitif |
year | year | Membagi berdasarkan tahun dari tanggal atau timestamp sumber. | date, timestamp, timestamptz, timestamp_ns, timestamptz_ns |
month | month | Membagi berdasarkan tahun dan bulan dari tanggal atau timestamp sumber. | date, timestamp, timestamptz, timestamp_ns, timestamptz_ns |
day | day | Membagi berdasarkan tahun, bulan, dan hari dari tanggal atau timestamp sumber. | date, timestamp, timestamptz, timestamp_ns, timestamptz_ns |
hour | hour | Membagi berdasarkan tahun, bulan, hari, dan jam dari timestamp sumber. | timestamp, timestamptz, timestamp_ns, timestamptz_ns |
bucket[N] | bucket[N] | Bucketing hash. Membagi data ke dalam N bucket dengan melakukan hashing terhadap nilai bidang sumber dan menggunakan operasi modulo. N harus merupakan bilangan bulat positif. | int, long, decimal, date, time, timestamp, timestamptz, timestamp_ns, timestamptz_ns, string, uuid, fixed[L], binary |
truncate[N] | truncate[N] | Partisi pemotongan. Memotong nilai integer hingga lebar N atau nilai string hingga panjang N karakter. N harus merupakan bilangan bulat positif. | int, long, decimal, string, binary |
void | void | Partisi void. Memetakan semua nilai ke null. Biasanya digunakan untuk menghapus bidang partisi sambil mempertahankan riwayat evolusi partisi. | Semua tipe |
SDK
SDK berikut mendukung antarmuka CreateTable:
CLI ossutil
Untuk perintah ossutil terkait API CreateTable, lihat create-table.
Kode error
Kode error | Kode status HTTP | Deskripsi |
BadRequestException | 400 | Permintaan tidak valid atau rusak. |
InvalidTableName | 400 | Nama tabel tidak valid. Nama tabel harus terdiri dari 1–255 karakter, hanya boleh berisi huruf kecil, angka, dan garis bawah (_), serta tidak boleh dimulai atau diakhiri dengan garis bawah. |
ForbiddenException | 403 | Pemanggil tidak memiliki izin untuk melakukan permintaan ini. |
NotFoundException | 404 | Sumber daya yang diminta tidak ada. |
ConflictException | 409 | Permintaan bertentangan dengan operasi penulisan sebelumnya. |