Todos los productos
Search
Centro de documentos

ApsaraDB for ClickHouse:CREATE TABLE

Última actualización: Sep 05, 2026

ApsaraDB for ClickHouse admite cuatro formas de crear una tabla: a partir de un esquema explícito, copiando el esquema de una tabla existente, replicando la estructura del conjunto de resultados de una consulta SELECT y como una tabla distribuida que abarca varias tablas locales.

Crear una tabla local

Una tabla local almacena datos en los nodos donde se crea. Utilice ON CLUSTER default para replicar la definición de la tabla en todos los nodos del clúster.

Sintaxis

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

Parámetros

Parámetro

Descripción

db

Nombre de la base de datos. El valor predeterminado es la base de datos actual.

local_table_name

Nombre de la tabla local.

ON CLUSTER cluster

Crea la tabla en cada nodo. Valor fijo: ON CLUSTER default.

name1, name2

Nombres de las columnas.

type1, type2

Tipos de datos de las columnas. Para consultar los tipos compatibles, consulte Data types.

ENGINE = engine_name()

Motor de la tabla. Consulte Table engines para ver los motores compatibles.

ORDER BY expr

Clave de ordenamiento. Obligatorio. Acepta una tupla de columnas o cualquier expresión.

`[DEFAULT

MATERIALIZED

ALIAS expr]`

Tipo de expresión predeterminada para una columna: DEFAULT genera un valor automáticamente cuando no se proporciona ninguno; MATERIALIZED es una expresión materializada; ALIAS es una expresión de alias.

GRANULARITY

Granularidad del índice.

[PARTITION BY expr]

Clave de partición. Por lo general, es un campo de fecha o una expresión de fecha. También acepta otros campos o expresiones.

[PRIMARY KEY expr]

Clave principal. De forma predeterminada, tiene el mismo valor que la clave de ordenamiento. En la mayoría de los casos, omita esta cláusula.

[SAMPLE BY expr]

Expresión de muestreo. Si se especifica, inclúyala en la clave principal.

[SETTINGS name=value, ...]

Configuraciones adicionales que afectan el rendimiento. Consulte Elementos de configuración SETTINGS.

ORDER BY , GRANULARITY , PARTITION BY , PRIMARY KEY , SAMPLE BY y SETTINGS solo son compatibles con los motores de tabla de la familia MergeTree. Consulte CREATE TABLE .

Configuración de ReplicatedMergeTree

Al utilizar un motor ReplicatedMergeTree, las dos formas siguientes son equivalentes:

  • ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}') — la forma completa; no modifique la plantilla de ruta.

  • ReplicatedMergeTree() — forma abreviada que se expande automáticamente a la forma completa.

Importante

En los clústeres de Double-replica Edition, todas las tablas deben usar motores de tabla Replicated de la familia MergeTree. Los motores no replicados (Non-Replicated) no replican datos entre réplicas, lo cual puede provocar inconsistencia en los datos.

Ejemplo

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;

Crear una tabla distribuida

Una tabla distribuida es una vista lógica sobre un conjunto de tablas locales. Las escrituras en una tabla distribuida se enrutan automáticamente a las tablas locales subyacentes según la clave de fragmentación. Las consultas agregan los resultados de todas las tablas locales antes de devolverlos.

Solo ApsaraDB for ClickHouse Community-Compatible Edition admite tablas distribuidas mediante el motor Distributed . En Enterprise Edition, varios nodos actúan como réplicas en lugar de fragmentos, por lo que no se necesitan tablas distribuidas.

Cree tablas locales en todos los nodos antes de crear una tabla distribuida.

Sintaxis

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

Parámetros

Parámetro

Descripción

db

Nombre de la base de datos. El valor predeterminado es la base de datos actual.

distributed_table_name

Nombre de la tabla distribuida.

ON CLUSTER cluster

Crea la tabla en cada nodo. Valor fijo: ON CLUSTER default.

local_table_name

Nombre de la tabla local subyacente.

sharding_key

Expresión de fragmentación que determina qué fragmento recibe cada fila. Acepta una expresión como rand() o una columna de tipo entero como user_id.

Ejemplo

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

Copiar un esquema de tabla

Cree una nueva tabla con las mismas definiciones de columnas y el mismo motor de tabla que una tabla existente.

Sintaxis

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

Parámetros

Parámetro

Descripción

db

Nombre de la base de datos. El valor predeterminado es la base de datos actual.

table_name1

Tabla de origen cuyo esquema se copia.

table_name2

Nueva tabla que se va a crear.

ON CLUSTER cluster

Crea la tabla en cada nodo. Valor fijo: ON CLUSTER default.

[ENGINE = engine_name]

Motor de tabla para la nueva tabla. Si se omite, la nueva tabla utiliza el mismo motor que la tabla de origen. Consulte Table engines.

Ejemplo

CREATE TABLE t2 ON CLUSTER default as default.local_table;

Crear una tabla a partir de una consulta SELECT

Cree una tabla cuyo esquema coincida con el conjunto de resultados de una instrucción SELECT y llénela con los resultados de la consulta.

Sintaxis

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

Parámetros

Parámetro

Descripción

db

Nombre de la base de datos. El valor predeterminado es la base de datos actual.

s_table_name

Nombre de la tabla que se va a crear.

ON CLUSTER cluster

Crea la tabla en cada nodo. Valor fijo: ON CLUSTER default.

ENGINE = engine_name()

Motor de la tabla. Consulte Table engines.

SELECT ...

Consulta cuyo conjunto de resultados define el esquema y los datos iniciales.

Ejemplo

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

Pasos siguientes