Todos os produtos
Search
Central de documentação

ApsaraDB for ClickHouse:CREATE TABLE

Última atualização: Jun 28, 2026

O ApsaraDB for ClickHouse oferece quatro formas de criar uma tabela: a partir de um schema explícito, copiando o schema de uma tabela existente, espelhando a estrutura do conjunto de resultados de um SELECT e como uma tabela distribuída que abrange várias tabelas locais.

Crie uma tabela local

Uma tabela local armazena dados nos nós onde é criada. Use ON CLUSTER default para replicar a definição da tabela em todos os nós do cluster.

Sintaxe

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

Descrição

db

Nome do banco de dados. O padrão é o banco de dados atual.

local_table_name

Nome da tabela local.

ON CLUSTER cluster

Cria a tabela em cada nó. Valor fixo: ON CLUSTER default.

name1, name2

Nomes das colunas.

type1, type2

Tipos de dados das colunas. Para tipos compatíveis, consulte Tipos de dados.

ENGINE = engine_name()

Engine da tabela. Consulte Engines de tabela para visualizar as engines compatíveis.

ORDER BY expr

Chave de ordenação. Obrigatório. Aceita uma tupla de colunas ou qualquer expressão.

`[DEFAULT

MATERIALIZED

ALIAS expr]`

Tipo de expressão padrão para uma coluna: DEFAULT gera um valor automaticamente quando nenhum é fornecido; MATERIALIZED é uma expressão materializada; ALIAS é uma expressão de alias.

GRANULARITY

Granularidade do índice.

[PARTITION BY expr]

Chave de partição. Geralmente um campo de data ou expressão de data. Também aceita outros campos ou expressões.

[PRIMARY KEY expr]

Chave primária. Assume o mesmo valor da chave de ordenação por padrão. Na maioria dos casos, omita esta cláusula.

[SAMPLE BY expr]

Expressão de amostragem. Se especificada, inclua-a na chave primária.

[SETTINGS name=value, ...]

Configurações adicionais que afetam o desempenho. Consulte Itens de configuração SETTINGS.

ORDER BY , GRANULARITY , PARTITION BY , PRIMARY KEY , SAMPLE BY e SETTINGS são compatíveis apenas com engines de tabela da família MergeTree. Consulte CREATE TABLE .

Configuração do ReplicatedMergeTree

Ao usar uma engine ReplicatedMergeTree, as duas formas a seguir são equivalentes:

  • ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}') — forma completa; não modifique o modelo de caminho.

  • ReplicatedMergeTree() — forma abreviada que se expande automaticamente para a forma completa.

Importante

Em clusters da Edição de Réplica Dupla, todas as tabelas devem usar engines de tabela Replicated da família MergeTree. Engines não replicadas (Non-Replicated) não replicam dados entre réplicas, o que pode levar à inconsistência de dados.

Exemplo

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;

Crie uma tabela distribuída

Uma tabela distribuída funciona como uma visualização lógica sobre um conjunto de tabelas locais. As gravações em uma tabela distribuída são roteadas automaticamente para as tabelas locais subjacentes com base na chave de sharding. As consultas agregam resultados de todas as tabelas locais antes de retorná-los.

Apenas o ApsaraDB for ClickHouse Community-Compatible Edition oferece suporte a tabelas distribuídas usando a engine Distributed . Na Enterprise Edition, vários nós atuam como réplicas em vez de shards, portanto, tabelas distribuídas não são necessárias.

Crie tabelas locais em todos os nós antes de criar uma tabela distribuída.

Sintaxe

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

Descrição

db

Nome do banco de dados. O padrão é o banco de dados atual.

distributed_table_name

Nome da tabela distribuída.

ON CLUSTER cluster

Cria a tabela em cada nó. Valor fixo: ON CLUSTER default.

local_table_name

Nome da tabela local subjacente.

sharding_key

Expressão de sharding que determina qual shard recebe cada linha. Aceita uma expressão como rand() ou uma coluna inteira como user_id.

Exemplo

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

Copie o schema de uma tabela

Crie uma nova tabela com as mesmas definições de colunas e engine de uma tabela existente.

Sintaxe

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

Parâmetros

Parâmetro

Descrição

db

Nome do banco de dados. O padrão é o banco de dados atual.

table_name1

Tabela de source cujo schema será copiado.

table_name2

Nova tabela a ser criada.

ON CLUSTER cluster

Cria a tabela em cada nó. Valor fixo: ON CLUSTER default.

[ENGINE = engine_name]

Engine da nova tabela. Se omitido, a nova tabela usa a mesma engine da tabela de source. Consulte Engines de tabela.

Exemplo

CREATE TABLE t2 ON CLUSTER default as default.local_table;

Crie uma tabela a partir de uma consulta SELECT

Crie uma tabela cujo schema corresponda ao conjunto de resultados de uma instrução SELECT e preencha-a com os resultados da consulta.

Sintaxe

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

Parâmetros

Parâmetro

Descrição

db

Nome do banco de dados. O padrão é o banco de dados atual.

s_table_name

Nome da tabela a ser criada.

ON CLUSTER cluster

Cria a tabela em cada nó. Valor fixo: ON CLUSTER default.

ENGINE = engine_name()

Engine da tabela. Consulte Engines de tabela.

SELECT ...

Consulta cujo conjunto de resultados define o schema e os dados iniciais.

Exemplo

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

Próximos passos