All Products
Search
Document Center

Object Storage Service:CreateTable

Last Updated:May 09, 2026

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 acs:osstables:{region}:{uid}:bucket/{bucketName}.

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 ICEBERG yang didukung.

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, kmsKeyArn.

sseAlgorithm

string

Ya, jika encryptionConfiguration ditentukan.

AES256

Algoritma enkripsi. Hanya AES256 yang didukung. Node induk: encryptionConfiguration.

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: encryptionConfiguration.

metadata

object

Tidak

-

Konfigurasi metadata untuk tabel. Termasuk skema, aturan partisi, urutan penulisan, dan properti tabel Iceberg. Node anak: iceberg.

iceberg

object

Ya, jika metadata ditentukan.

-

Konfigurasi metadata untuk tabel Iceberg. Node induk: metadata. Node anak: schema, partitionSpec, writeOrder, dan properties.

schema

object

Tidak

-

Definisi skema tabel Iceberg, yang menjelaskan kolom-kolom tabel. Node induk: iceberg. Node anak: fields.

fields

array

Ya, jika schema ditentukan.

-

Array definisi bidang untuk skema. Setiap elemen menjelaskan properti suatu kolom:

  • id: ID bidang. Ini adalah bilangan bulat opsional. Kami merekomendasikan Anda secara eksplisit menentukan ID ini dan memastikannya unik dalam skema. sourceId di partitionSpec harus sesuai dengan ID ini.

  • name: Nama bidang. Bidang ini wajib diisi.

  • type: Tipe data bidang. Bidang ini wajib diisi. Untuk daftar tipe yang didukung, lihat bagian Tipe Bidang Skema.

  • required: Menentukan apakah bidang tersebut wajib diisi. Ini adalah nilai boolean opsional yang secara default bernilai false. Jika diatur ke true, kolom tersebut tidak mengizinkan nilai NULL.

Node induk: schema

partitionSpec

object

Tidak

-

Menentukan aturan partisi untuk tabel. Node induk: iceberg. Berisi node anak berikut:

  • specId: ID spesifikasi partisi. Ini adalah bilangan bulat opsional yang secara default bernilai 0.

  • fields: Array definisi bidang partisi. Lihat baris berikutnya untuk detailnya.

fields

array

  • sourceId: Wajib. ID bidang sumber dari skema. Nilai ini harus sesuai dengan id bidang dalam skema.

  • transform: Wajib. Jenis transformasi partisi. Nilai yang didukung adalah identity, void, year, month, day, hour, bucket[N], dan truncate[N].

  • fieldId: Opsional. ID bidang partisi. Ini adalah bilangan bulat.

  • name: Wajib. Nama bidang partisi.

Node induk: partitionSpec

writeOrder

object

Tidak

-

Menentukan urutan pengurutan fisik data selama penulisan. Node induk: iceberg. Berisi node anak berikut:

  • orderId: ID urutan pengurutan. Ini adalah bilangan bulat opsional yang secara default bernilai 1 dan harus lebih besar atau sama dengan 1.

  • fields: Array definisi bidang pengurutan. Lihat baris berikutnya untuk detailnya.

fields

array

  • sourceId: Wajib. ID bidang sumber dari skema. Nilai ini harus sesuai dengan id bidang dalam skema.

  • transform: Wajib. Jenis transformasi pengurutan. Nilai yang didukung adalah identity, void, year, month, day, hour, bucket[N], dan truncate[N].

  • direction: Urutan pengurutan. Nilainya dapat berupa asc (menaik) atau desc (menurun). Wajib diisi.

  • nullOrder: Urutan pengurutan untuk nilai NULL. Nilainya dapat berupa nulls-first (menempatkan nilai NULL di awal) atau nulls-last (menempatkan nilai NULL di akhir). Wajib diisi.

Node induk: writeOrder

properties

object

Tidak

-

Properti konfigurasi untuk tabel Iceberg, dalam format pasangan kunci-nilai. Node induk adalah iceberg. Properti umum meliputi: format-version (versi format Iceberg, dengan rentang nilai 1 hingga 3), write.format.default (format file penulisan, seperti parquet), dan write.target-file-size-bytes (ukuran target file).

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 acs:osstables:{region}:{uid}:bucket/{bucketName}/table/{tableId}.

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.