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
TimeSeries sem especificar uma lista de colunas):
Tabelas de destino
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 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
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
TimeSeries.
A instrução mais simples
SHOW CREATE TABLE my_table):
.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
A coluna id
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:
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:
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
- 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_timeemax_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.
Tabelas de destino externas
TimeSeries use uma tabela criada manualmente:
Configurações
TimeSeries:
Aqui está uma lista de funções que aceitam uma tabela
TimeSeries como argumento: