全部产品
Search
文档中心

ApsaraDB for ClickHouse:CREATE TABLE

更新时间:Dec 31, 2025

Topik ini menjelaskan cara membuat tabel di ApsaraDB for ClickHouse.

Buat tabel lokal

Sintaks:

CREATE TABLE [IF NOT EXISTS] [db.]local_table_name ON CLUSTER cluster
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    ...
    INDEX index_name1 expr1 TYPE type1(...) GRANULARITY value1,
    INDEX index_name2 expr2 TYPE type2(...) GRANULARITY value2
) ENGINE = engine_name()
[PARTITION BY expr]
ORDER BY expr
[PRIMARY KEY expr]
[SAMPLE BY expr]
[SETTINGS name=value, ...];

Parameter:

Parameter

Deskripsi

db

Nama database. Nilai default-nya adalah database saat ini. Topik ini menggunakan `default` sebagai contoh.

local_table_name

Nama tabel lokal.

ON CLUSTER cluster

Membuat tabel lokal pada setiap node. Nilainya tetap ON CLUSTER default.

name1,name2

Nama kolom.

type1,type2

Tipe kolom.

Catatan

Untuk informasi selengkapnya tentang tipe data yang didukung oleh ApsaraDB for ClickHouse, lihat Data types.

ENGINE = engine_name()

Jenis Mesin tabel.

Saat Anda menggunakan mesin ini untuk membuat tabel, konfigurasikan parameter sebagai berikut.

  • ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}'): konfigurasi tetap. Anda tidak perlu mengubahnya.

  • ReplicatedMergeTree(): setara dengan ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}').

Penting

Saat membuat tabel di kluster Edisi Double-replica, Anda harus menggunakan Mesin tabel Replicated dari family MergeTree. Jika Anda menggunakan Mesin tabel non-replikasi, data tidak dapat direplikasi antar-replika, yang dapat menyebabkan ketidakkonsistenan data.

Untuk informasi selengkapnya tentang jenis Mesin tabel yang didukung oleh ApsaraDB for ClickHouse, lihat Table engines.

ORDER BY expr

Kunci pengurutan. Parameter ini wajib. Nilainya dapat berupa tupel dari kumpulan kolom atau ekspresi apa pun.

[DEFAULT|MATERIALIZED|ALIAS expr]

Ekspresi default.

  • DEFAULT: Ekspresi default biasa. Jika nilai tidak ditentukan untuk suatu bidang, nilai default akan dibuat dan digunakan secara otomatis.

  • MATERIALIZED: Ekspresi materialized.

  • ALIAS: Ekspresi alias.

GRANULARITY

Parameter granularitas indeks.

[PARTITION BY expr]

Kunci partisi. Data biasanya dipartisi berdasarkan tanggal. Anda juga dapat menggunakan bidang lain atau ekspresi bidang.

[PRIMARY KEY expr]

Kunci primary. Secara default, kunci primary sama dengan kunci pengurutan. Dalam kebanyakan kasus, Anda tidak perlu menggunakan klausa PRIMARY KEY untuk menentukan kunci primary.

[SAMPLE BY expr]

Ekspresi sampling. Jika Anda menggunakan ekspresi sampling, Anda harus memasukkan ekspresi ini dalam kunci primary.

[SETTINGS name=value, ...]

Parameter tambahan yang memengaruhi performa.

Catatan

Untuk informasi selengkapnya tentang parameter yang didukung dalam SETTINGS, lihat SETTINGS configuration items.

Catatan

Hanya Mesin tabel dari family MergeTree yang mendukung parameter berikut: ORDER BY, GRANULARITY, PARTITION BY, PRIMARY KEY, SAMPLE BY, dan [SETTINGS name=value, ...]. Untuk informasi selengkapnya, lihat CREATE TABLE.

Contoh:

CREATE TABLE local_table ON CLUSTER default
(
    Year UInt16,
    Quarter UInt8,
    Month UInt8,
    DayofMonth UInt8,
    DayOfWeek UInt8,
    FlightDate Date,
    FlightNum String,
    Div5WheelsOff String,
    Div5TailNum String
)ENGINE = MergeTree()
 PARTITION BY toYYYYMM(FlightDate)
 PRIMARY KEY (intHash32(FlightDate))
 ORDER BY (intHash32(FlightDate),FlightNum)
 SAMPLE BY intHash32(FlightDate)
SETTINGS index_granularity= 8192;

Buat tabel terdistribusi

Tabel terdistribusi merupakan kumpulan tabel lokal yang menyediakan tampilan terpadu untuk menulis dan mengkueri data di beberapa tabel lokal. Saat data ditulis ke tabel terdistribusi, data tersebut secara otomatis didistribusikan ke setiap tabel lokal dalam kumpulan tersebut. Saat melakukan kueri pada tabel terdistribusi, setiap tabel lokal dikueri secara terpisah, lalu hasilnya diagregasi dan dikembalikan. Anda harus membuat tabel lokal terlebih dahulu sebelum membuat tabel terdistribusi.

Catatan

Hanya ApsaraDB for ClickHouse Community-Compatible Edition yang mendukung pembuatan tabel terdistribusi menggunakan Mesin Distributed. ApsaraDB for ClickHouse Enterprise Edition tidak menggunakan konsep shard. Di Edisi Perusahaan, beberapa node bertindak sebagai replika, sehingga Anda tidak perlu membuat tabel terdistribusi.

Sintaks:

CREATE TABLE [db.]distributed_table_name ON CLUSTER default
 AS db.local_table_name ENGINE = Distributed(cluster, db, local_table_name [, sharding_key])

Parameter:

Parameter

Deskripsi

db

Nama database. Nilai default-nya adalah database saat ini. Topik ini menggunakan `default` sebagai contoh.

distributed_table_name

Nama tabel terdistribusi.

ON CLUSTER cluster

Membuat tabel pada setiap node. Nilainya tetap ON CLUSTER default.

local_table_name

Nama tabel lokal yang telah dibuat.

sharding_key

Ekspresi sharding. Ekspresi ini menentukan shard tempat data ditulis.

sharding_key dapat berupa ekspresi, seperti fungsi rand(), atau kolom, seperti user_id bertipe Integer.

Contoh:

CREATE TABLE distributed_table ON CLUSTER default
 AS default.local_table 
ENGINE = Distributed(default, default, local_table, rand());

Buat tabel dengan menyalin skema tabel

Anda dapat menyalin skema dari tabel sumber untuk membuat tabel baru dengan struktur yang identik.

Sintaks:

CREATE TABLE [IF NOT EXISTS] [db.]table_name2 ON CLUSTER cluster AS [db.]table_name1 [ENGINE = engine_name];

Parameter:

Parameter

Deskripsi

db

Nama database. Nilai default-nya adalah database saat ini. Topik ini menggunakan `default` sebagai contoh.

table_name1

Tabel sumber yang skemanya ingin Anda salin. Topik ini menggunakan tabel lokal yang telah dibuat `local_table` sebagai contoh.

table_name2

Tabel baru yang akan dibuat.

ON CLUSTER cluster

Membuat tabel pada setiap node. Nilainya tetap ON CLUSTER default.

[ENGINE = engine_name]

Jenis Mesin tabel. Jika Anda tidak menentukan Mesin tabel, tabel baru akan menggunakan Mesin yang sama dengan tabel sumber secara default.

Catatan

Untuk informasi selengkapnya tentang jenis Mesin tabel yang didukung oleh ApsaraDB for ClickHouse, lihat Table engines.

Contoh:

CREATE TABLE t2 ON CLUSTER default as default.local_table;

Buat tabel dengan struktur yang sama seperti set hasil kueri

Anda dapat membuat tabel yang memiliki struktur identik dengan set hasil dari klausa SELECT. Tabel tersebut menggunakan Mesin yang ditentukan dan diisi dengan data dari set hasil tersebut.

Sintaks:

CREATE TABLE [IF NOT EXISTS] [db.]s_table_name ON CLUSTER cluster ENGINE = engine_name() AS SELECT ...

Parameter:

Parameter

Deskripsi

db

Nama database. Nilai default-nya adalah database saat ini. Topik ini menggunakan `default` sebagai contoh.

s_table_name

Tabel yang akan dibuat dari pernyataan `SELECT`.

ON CLUSTER cluster

Membuat tabel pada setiap node. Nilainya tetap ON CLUSTER default.

ENGINE = engine_name()

Jenis Mesin tabel.

Catatan

Untuk informasi selengkapnya tentang jenis Mesin tabel yang didukung oleh ApsaraDB for ClickHouse, lihat Table engines.

SELECT ...

Klausa SELECT.

Contoh:

CREATE TABLE t3 ON CLUSTER default ENGINE =MergeTree() order by Year as select * from default.local_table;

Referensi