Esta es una funcionalidad experimental que puede cambiar de formas incompatibles con versiones anteriores en futuras versiones.
Habilite el uso del motor de tabla TimeSeries
con el ajuste allow_experimental_time_series_table.
Ejecute el comando
set allow_experimental_time_series_table = 1.Sintaxis
Uso
TimeSeries sin especificar una lista de columnas):
Tablas de destino
TimeSeries no tiene datos propios; todo se almacena en sus tablas de destino.
Esto es similar al funcionamiento de una vista materializada,
con la diferencia de que una vista materializada tiene una sola tabla de destino,
mientras que una tabla TimeSeries tiene tres tablas de destino llamadas data, tag y metrics.
Las tablas de destino pueden especificarse explícitamente en la consulta CREATE TABLE
o el motor de tabla TimeSeries puede generar automáticamente tablas de destino internas.
Las tablas de destino son las siguientes:
Tabla data
La tabla tags contiene identificadores calculados para cada combinación de un nombre de métrica y etiquetas.
La tabla tags debe tener las siguientes columnas:
Tabla de métricas
Cualquier fila insertada en una tabla
TimeSeries se almacenará realmente en esas tres tablas de destino.
Una tabla TimeSeries contiene todas esas columnas de las tablas data, etiquetas y métricas.
Creación
TimeSeries.
La sentencia más sencilla
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
y cada tabla de destino tiene columnas que son un subconjunto de las columnas de la tabla principal TimeSeries:
Ajuste de los tipos de las columnas
La columna id
id contiene identificadores; cada identificador se calcula a partir de una combinación de un nombre de métrica y etiquetas.
La expresión DEFAULT de la columna id es la que se utilizará para calcular dichos identificadores.
Tanto el tipo de la columna id como esa expresión pueden ajustarse especificándolos explícitamente:
tags y all_tags. En este ejemplo significan lo mismo; sin embargo, pueden ser diferentes
si se usa la configuración tags_to_columns. Esta configuración permite especificar que un tag concreto debe almacenarse en una columna independiente en lugar de almacenarse
en un mapa dentro de la columna tags:
my_table como de su tag interna. En este caso, la columna tags no contendrá los tag instance y job,
pero la columna all_tags sí las contendrá. La columna all_tags es efímera y su único propósito es servir para la expresión DEFAULT
de la columna id.
Los tipos de las columnas pueden ajustarse especificándolos de forma explícita:
Motores de las tablas internas de destino
- la tabla data usa MergeTree;
- la tabla tags usa AggregatingMergeTree porque los mismos datos suelen insertarse varias veces en esta tabla, por lo que hace falta una forma
de eliminar duplicados, y también porque es necesario realizar agregación para las columnas
min_timeymax_time; - la tabla metrics usa ReplacingMergeTree porque los mismos datos suelen insertarse varias veces en esta tabla, por lo que hace falta una forma de eliminar duplicados.
Tablas de destino externas
TimeSeries utilice una tabla creada manualmente:
Configuración
TimeSeries:
Aquí tienes una lista de funciones que admiten una tabla
TimeSeries como argumento: