Skip to main content
Um motor de tabela que armazena séries temporais, ou seja, um conjunto de valores associados a timestamps e tags (ou labels):
Este é um recurso experimental que pode mudar de formas incompatíveis com versões anteriores em lançamentos futuros. Habilite o uso do motor de tabela TimeSeries com a configuração allow_experimental_time_series_table. Execute o comando set allow_experimental_time_series_table = 1.

Sintaxe

Uso

É mais fácil começar com tudo configurado com os valores padrão (é permitido criar uma tabela TimeSeries sem especificar uma lista de colunas):
Essa tabela pode ser usada com os seguintes protocolos (uma porta deve ser atribuída na configuração do servidor):

Tabelas de destino

Uma tabela TimeSeries não armazena dados próprios; tudo é armazenado em suas tabelas de destino. Isso é semelhante ao funcionamento de uma visão materializada, com a diferença de que uma visão materializada tem uma tabela de destino, enquanto uma tabela TimeSeries tem três tabelas de destino chamadas data, tags e metrics. As tabelas de destino podem ser especificadas explicitamente na consulta CREATE TABLE ou o motor de tabela TimeSeries pode gerar automaticamente tabelas de destino internas. As tabelas de destino são as seguintes:

Tabela data

A tabela data contém séries temporais associadas a um identificador. A tabela data deve ter as seguintes colunas:

Tabela de tags

A tabela tags contém identificadores calculados para cada combinação de nome de métrica e tags. A tabela tags deve ter as colunas:

Tabela de métricas

A tabela metrics contém algumas informações sobre as métricas coletadas, os tipos dessas métricas e suas descrições. A tabela metrics deve conter as colunas: Qualquer linha inserida em uma tabela TimeSeries será, na verdade, armazenada nessas três tabelas de destino. Uma tabela TimeSeries contém todas essas colunas das tabelas data, tags, metrics.

Criação

Há várias maneiras de criar uma tabela com o motor de tabela TimeSeries. A instrução mais simples
na verdade, criará a tabela a seguir (você pode verificar isso executando SHOW CREATE TABLE my_table):
Assim, as colunas foram geradas automaticamente, e também há três UUIDs internos nesta instrução - um para cada tabela de destino interna criada. (UUIDs internos normalmente não são exibidos até que a configuração show_table_uuid_in_table_create_query_if_not_nil seja definida.) As tabelas de destino internas têm nomes como .inner_id.data.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, .inner_id.tags.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, .inner_id.metrics.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx e cada tabela de destino tem colunas que são um subconjunto das colunas da tabela principal TimeSeries:

Ajustando os tipos das colunas

Você pode ajustar os tipos de quase qualquer coluna das tabelas de destino internas, especificando-os explicitamente ao definir a tabela principal. Por exemplo,
fará com que a tabela interna de data armazene o timestamp em microssegundos em vez de milissegundos:

A coluna id

A coluna id contém identificadores; cada identificador é calculado com base em uma combinação do nome da métrica e das tags. A expressão DEFAULT da coluna id é usada para calcular esses identificadores. Tanto o tipo da coluna id quanto essa expressão podem ser ajustados, especificando-os explicitamente:

As colunas tags e all_tags

Há duas colunas que contêm maps de tags: tags e all_tags. Neste exemplo, elas são equivalentes, mas podem ser diferentes se a configuração tags_to_columns for usada. Essa configuração permite especificar que uma tag específica deve ser armazenada em uma coluna separada, em vez de ficar armazenada em um map dentro da coluna tags:
Esta instrução adicionará as colunas:
à definição de my_table e de sua tabela de destino interna de tags. Nesse caso, a coluna tags não conterá as tags instance e job, mas a coluna all_tags conterá. A coluna all_tags é efêmera e serve apenas para ser usada na expressão DEFAULT da coluna id. Os tipos das colunas podem ser ajustados especificando-os explicitamente:

Motores de tabela das tabelas de destino internas

Por padrão, as tabelas de destino internas usam os seguintes motores de tabela:
  • a tabela data usa MergeTree;
  • a tabela tags usa AggregatingMergeTree porque os mesmos dados costumam ser inseridos várias vezes nessa tabela, então precisamos de uma forma de remover duplicatas, além de ser necessário fazer agregação para as colunas min_time e max_time;
  • a tabela metrics usa ReplacingMergeTree porque os mesmos dados costumam ser inseridos várias vezes nessa tabela, então precisamos de uma forma de remover duplicatas.
Outros motores de tabela também podem ser usados nas tabelas de destino internas, caso isso seja especificado:

Tabelas de destino externas

É possível fazer com que uma tabela TimeSeries use uma tabela criada manualmente:

Configurações

Aqui está uma lista de configurações que podem ser especificadas ao definir uma tabela TimeSeries: Aqui está uma lista de funções que aceitam uma tabela TimeSeries como argumento:
Última modificação em 12 de junho de 2026