Tous les produits
Search
Centre de documentation

ApsaraDB for ClickHouse:CREATE TABLE

Dernière mise à jour :Aug 12, 2026

ApsaraDB for ClickHouse propose quatre méthodes pour créer une table : à partir d'un schéma explicite, en copiant le schéma d'une table existante, en reproduisant la structure d'un jeu de résultats SELECT, ou sous forme de table distribuée couvrant plusieurs tables locales.

Créer une table locale

Une table locale stocke les données sur les nœuds où elle est créée. Utilisez ON CLUSTER default pour répliquer la définition de la table sur tous les nœuds du cluster.

Syntaxe

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, ...];

Paramètres

Paramètre Description
db Nom de la base de données. Par défaut, il s'agit de la base de données actuelle.
local_table_name Nom de la table locale.
ON CLUSTER cluster Crée la table sur chaque nœud. Valeur fixe : ON CLUSTER default.
name1, name2 Noms des colonnes.
type1, type2 Types de données des colonnes. Pour consulter les types pris en charge, reportez-vous à Types de données.
ENGINE = engine_name() Moteur de table. Pour connaître les moteurs disponibles, consultez Moteurs de table.
ORDER BY expr Clé de tri. Obligatoire. Accepte un tuple de colonnes ou toute expression valide.
`[DEFAULT MATERIALIZED

ALIAS expr]`

Type d'expression par défaut pour une colonne : DEFAULT génère automatiquement une valeur si aucune n'est fournie ; MATERIALIZED correspond à une expression matérialisée ; ALIAS définit une expression d'alias.

GRANULARITY Granularité de l'index.
[PARTITION BY expr] Clé de partitionnement. Il s'agit généralement d'un champ de date ou d'une expression de date, mais d'autres champs ou expressions sont également acceptés.
[PRIMARY KEY expr] Clé primaire. Elle prend par défaut la même valeur que la clé de tri. Dans la plupart des cas, vous pouvez omettre cette clause.
[SAMPLE BY expr] Expression d'échantillonnage. Si elle est spécifiée, incluez-la dans la clé primaire.
[SETTINGS name=value, ...] Paramètres supplémentaires influençant les performances. Consultez Éléments de configuration SETTINGS.
Les clauses ORDER BY , GRANULARITY , PARTITION BY , PRIMARY KEY , SAMPLE BY et SETTINGS sont uniquement prises en charge par les moteurs de table de la famille MergeTree. Reportez-vous à CREATE TABLE .

Configuration de ReplicatedMergeTree

Lorsque vous utilisez un moteur ReplicatedMergeTree, les deux formes suivantes sont équivalentes :

  • ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}') : forme complète ; ne modifiez pas le modèle de chemin.

  • ReplicatedMergeTree() : forme abrégée qui se développe automatiquement en forme complète.

Important

Dans les clusters Double-replica Edition, toutes les tables doivent utiliser des moteurs de table Replicated de la famille MergeTree. Les moteurs non répliqués ne dupliquent pas les données entre les réplicas, ce qui risque d'entraîner des incohérences de données.

Exemple

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;

Créer une table distribuée

Une table distribuée constitue une vue logique sur un ensemble de tables locales. Le système route automatiquement les écritures vers les tables locales sous-jacentes en fonction de la clé de sharding. Les requêtes agrègent les résultats de toutes les tables locales avant de les retourner.

Seule l'édition Community-Compatible Edition d'ApsaraDB for ClickHouse prend en charge les tables distribuées utilisant le moteur Distributed . Dans l'édition Enterprise Edition, plusieurs nœuds agissent comme des réplicas plutôt que comme des shards, rendant les tables distribuées inutiles.

Créez des tables locales sur tous les nœuds avant de créer une table distribuée.

Syntaxe

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

Paramètres

Paramètre Description
db Nom de la base de données. Par défaut, il s'agit de la base de données actuelle.
distributed_table_name Nom de la table distribuée.
ON CLUSTER cluster Crée la table sur chaque nœud. Valeur fixe : ON CLUSTER default.
local_table_name Nom de la table locale sous-jacente.
sharding_key Expression de sharding déterminant quel shard reçoit chaque ligne. Accepte une expression telle que rand() ou une colonne entière comme user_id.

Exemple

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

Copier un schéma de table

Créez une nouvelle table avec les mêmes définitions de colonnes et le même moteur qu'une table existante.

Syntaxe

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

Paramètres

Paramètre Description
db Nom de la base de données. Par défaut, il s'agit de la base de données actuelle.
table_name1 Table source dont le schéma est copié.
table_name2 Nouvelle table à créer.
ON CLUSTER cluster Crée la table sur chaque nœud. Valeur fixe : ON CLUSTER default.
[ENGINE = engine_name] Moteur de table pour la nouvelle table. En l'absence de cette clause, la nouvelle table utilise le même moteur que la table source. Consultez Moteurs de table.

Exemple

CREATE TABLE t2 ON CLUSTER default as default.local_table;

Créer une table à partir d'une requête SELECT

Créez une table dont le schéma correspond au jeu de résultats d'une instruction SELECT et remplissez-la avec les résultats de la requête.

Syntaxe

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

Paramètres

Paramètre Description
db Nom de la base de données. Par défaut, il s'agit de la base de données actuelle.
s_table_name Nom de la table à créer.
ON CLUSTER cluster Crée la table sur chaque nœud. Valeur fixe : ON CLUSTER default.
ENGINE = engine_name() Moteur de table. Consultez Moteurs de table.
SELECT ... Requête dont le jeu de résultats définit le schéma et les données initiales.

Exemple

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

Étapes suivantes