Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Funciones para trabajar con series temporales

Las funciones siguientes están diseñadas para usarse con funciones de agregación timeSeries*(), como timeSeriesInstantRateToGrid, timeSeriesLastToGrid, entre otras.

seriesDecomposeSTL

Introducido en: v24.1.0

Descompone un dato de serie temporal mediante STL (procedimiento de descomposición estacional-tendencia basado en Loess) en un componente estacional, una tendencia y un componente residual.

Sintaxis

seriesDecomposeSTL(series, period)

Argumentos

Valor devuelto

Devuelve un array de cuatro arrays, donde el primero incluye los componentes estacionales, el segundo la tendencia, el tercero el componente residual y el cuarto el componente base (estacional + tendencia). Array(Array(Float32), Array(Float32), Array(Float32), Array(Float32))

Ejemplos

Descomposición de datos de serie temporal con STL

SELECT seriesDecomposeSTL([10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34], 3) AS print_0
┌─print_0────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [[-13.529999,-3.1799996,16.71,-13.53,-3.1799996,16.71,-13.53,-3.1799996,16.71,-13.530001,-3.18,16.710001,-13.530001,-3.1800003,16.710001,-13.530001,-3.1800003,16.710001,-13.530001,-3.1799994,16.71,-13.529999,-3.1799994,16.709997],[23.63,23.63,23.630003,23.630001,23.630001,23.630001,23.630001,23.630001,23.630001,23.630001,23.630001,23.63,23.630001,23.630001,23.63,23.630001,23.630001,23.63,23.630001,23.630001,23.630001,23.630001,23.630001,23.630003],[0,0.0000019073486,-0.0000019073486,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.0000019073486,0,0],[10.1,20.449999,40.340004,10.100001,20.45,40.34,10.100001,20.45,40.34,10.1,20.45,40.34,10.1,20.45,40.34,10.1,20.45,40.34,10.1,20.45,40.34,10.100002,20.45,40.34]] │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

seriesOutliersDetectTukey

Introducido en: v24.2.0

Detecta valores atípicos en datos de series temporales mediante Tukey Fences.

Sintaxis

seriesOutliersDetectTukey(series[, min_percentile, max_percentile, K])

Argumentos

  • series — Un array de valores numéricos. Array((UInt8/16/32/64)) o Array(Float*)
  • min_percentile — Opcional. El percentil mínimo que se usará para calcular el rango intercuartílico (IQR). El valor debe estar en el intervalo [0.02,0.98]. El valor predeterminado es 0.25. Float*
  • max_percentile — Opcional. El percentil máximo que se usará para calcular el rango intercuartílico (IQR). El valor debe estar en el intervalo [0.02,0.98]. El valor predeterminado es 0.75. Float*
  • K — Opcional. Valor constante no negativo para detectar valores atípicos leves o más extremos. El valor predeterminado es 1.5. Float*

Valor devuelto

Devuelve un array de la misma longitud que el array de entrada, donde cada valor representa la puntuación de posible anomalía del elemento correspondiente de la serie. Una puntuación distinta de cero indica una posible anomalía. Array(Float32)

Ejemplos

Detección básica de valores atípicos

SELECT seriesOutliersDetectTukey([-3, 2, 15, 3, 5, 6, 4, 5, 12, 45, 12, 3, 3, 4, 5, 6]) AS print_0
┌─print_0────────────────────────────┐
│ [0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0] │
└────────────────────────────────────┘

Detección de valores atípicos con parámetros personalizados

SELECT seriesOutliersDetectTukey([-3, 2, 15, 3, 5, 6, 4.50, 5, 12, 45, 12, 3.40, 3, 4, 5, 6], 0.2, 0.8, 1.5) AS print_0
┌─print_0──────────────────────────────┐
│ [0,0,0,0,0,0,0,0,0,19.5,0,0,0,0,0,0] │
└──────────────────────────────────────┘

seriesPeriodDetectFFT

Introducido en: v23.12.0

Encuentra el período del dato de serie temporal dado mediante FFT: transformada rápida de Fourier

Sintaxis

seriesPeriodDetectFFT(series)

Argumentos

Valor devuelto

Devuelve un valor real igual al período del dato de serie temporal. NaN cuando el número de puntos de datos es menor que cuatro. Float64

Ejemplos

Detección de períodos con un patrón simple

SELECT seriesPeriodDetectFFT([1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6]) AS print_0
┌─print_0─┐
│       3 │
└─────────┘

Detección de período con un patrón complejo

SELECT seriesPeriodDetectFFT(arrayMap(x -> abs((x % 6) - 3), range(1000))) AS print_0
┌─print_0─┐
│       6 │
└─────────┘

timeSeriesCopyTag

Introducido en: v26.1.0

Copia una etiqueta especificada de un grupo de etiquetas (src_group) a otro (dest_group). La función reemplaza cualquier valor anterior de la etiqueta copiada en dest_group. Si la etiqueta copiada no está presente en src_group, la función también la eliminará de dest_group. La función reproduce la lógica de copia de los modificadores de prometheus group left/group right.

Sintaxis

timeSeriesCopyTag(dest_group, src_group, tag_to_copy)

Argumentos

  • dest_group — El grupo de etiquetas de destino. UInt64
  • src_group — El grupo de etiquetas de origen. UInt64
  • tag_to_copy — El nombre de una etiqueta que se copiará. String

Valor devuelto

Devuelve un grupo de etiquetas que contiene las etiquetas de dest_group, junto con las etiquetas copiadas de src_group. UInt64

Ejemplos

Ejemplo

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS dest_group,
       timeSeriesTagsToGroup([('code', '404'), ('message', 'Page not found')], '__name__', 'http_codes') AS src_group,
       timeSeriesCopyTag(dest_group, src_group, '__name__') AS result_group,
       timeSeriesGroupToTags(result_group)
┌─dest_group─┬─src_group─┬─result_group─┬─timeSeriesGroupToTags(result_group)───────────────────────┐
│          1 │         2 │            3 │ [('__name__','http_codes'),('env','dev'),('region','eu')] │
└────────────┴───────────┴──────────────┴───────────────────────────────────────────────────────────┘

timeSeriesCopyTags

Introducido en: v26.1.0

Copia las etiquetas especificadas de un grupo de etiquetas (src_group) a otro (dest_group). La función reemplaza cualquier valor anterior de las etiquetas copiadas en dest_group. Si alguna de las etiquetas copiadas no está presente en src_group, la función también la eliminará de dest_group. La función imita la lógica de copia de los modificadores de Prometheus group left/group right.

Sintaxis

timeSeriesCopyTags(dest_group, src_group, tags_to_copy)

Argumentos

  • dest_group — El grupo de etiquetas de destino. UInt64
  • src_group — El grupo de etiquetas de origen. UInt64
  • tags_to_copy — Los nombres de las etiquetas que se copiarán. Array(String)

Valor devuelto

Devuelve un grupo de etiquetas que contiene las etiquetas de dest_group, junto con las etiquetas copiadas de src_group. UInt64

Ejemplos

Ejemplo

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS dest_group,
       timeSeriesTagsToGroup([('code', '404'), ('message', 'Page not found')], '__name__', 'http_codes') AS src_group,
       timeSeriesCopyTags(dest_group, src_group, ['__name__', 'code', 'env']) AS result_group,
       timeSeriesGroupToTags(result_group)
┌─dest_group─┬─src_group─┬─result_group─┬─timeSeriesGroupToTags(result_group)────────────────────────┐
│          1 │         2 │            3 │ [('__name__','http_codes'),('code','404'),('region','eu')] │
└────────────┴───────────┴──────────────┴────────────────────────────────────────────────────────────┘

timeSeriesExtractTag

Introducido en: v26.1.0

Extrae el valor de una etiqueta especificada del grupo. Devuelve NULL si no se encuentra. Véase también la función timeSeriesGroupToTags().

Sintaxis

timeSeriesExtractTag(group)

Argumentos

  • group — Un grupo de etiquetas. UInt64
  • tag_to_extract — El nombre de una etiqueta que se extraerá del grupo String

Valor devuelto

Devuelve el valor de una etiqueta especificada. Nullable(String)

Ejemplos

Ejemplo

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
       timeSeriesExtractTag(group, '__name__'),
       timeSeriesExtractTag(group, 'env'),
       timeSeriesExtractTag(group, 'instance')
┌─group─┬─timeSeriesExtractTag(group, '__name__')─┬─timeSeriesExtractTag(group, 'env')─┬─timeSeriesExtractTag(group, 'instance')─┐
│     1 │ http_requests_count                     │ dev                                │ ᴺᵁᴸᴸ                                    │
└───────┴─────────────────────────────────────────┴────────────────────────────────────┴─────────────────────────────────────────┘

timeSeriesFromGrid

Introducido en: v25.8.0

Convierte un Array de valores [x1, x2, x3, ...] en un Array de Tuplas [(start_timestamp, x1), (start_timestamp + step, x2), (start_timestamp + 2 * step, x3), ...].

El timestamp actual se incrementa en step hasta que es mayor que end_timestamp Si la cantidad de valores no coincide con la cantidad de timestamps, la función lanza una excepción.

Los valores NULL en [x1, x2, x3, ...] se omiten, pero el timestamp actual se sigue incrementando. Por ejemplo, para [value1, NULL, x2] la función devuelve [(start_timestamp, x1), (start_timestamp + 2 * step, x2)].

Sintaxis

timeSeriesFromGrid(start_timestamp, end_timestamp, step, values)

Argumentos

Valor devuelto

Devuelve los valores del array de origen combinados con marcas de tiempo en una rejilla temporal regular descrita por start_timestamp y step. Array(Tuple(DateTime64, Float64))

Ejemplos

Ejemplo de uso

SELECT timeSeriesFromGrid('2025-06-01 00:00:00'::DateTime64(3), '2025-06-01 00:01:30.000'::DateTime64(3), 30, [10, 20, NULL, 30]) AS result;
┌─result─────────────────────────────────────────────────────────────────────────────────────────┐
│ [('2025-06-01 00:00:00.000',10),('2025-06-01 00:00:30.000',20),('2025-06-01 00:01:30.000',30)] │
└────────────────────────────────────────────────────────────────────────────────────────────────┘

timeSeriesGroupToSamplingKey

Introducido en: v26.4.0

Devuelve una clave de muestreo UInt64 estable derivada de las etiquetas del grupo especificado.

El valor es determinista: si las etiquetas de entrada son idénticas, siempre producen la misma clave. Está pensada como clave de ordenación para operadores de muestreo como limitk y limit_ratio.

Sintaxis

timeSeriesGroupToSamplingKey(group)

Argumentos

  • group — Un grupo de etiquetas. UInt64

Valor devuelto

Un hash UInt64 estable derivado de las etiquetas asociadas al grupo. UInt64

Ejemplos

Ejemplo

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
       timeSeriesGroupToSamplingKey(group) AS sampling_key
┌─group─┬─────────sampling_key─┐
│     1 │ 15511321834549144507 │
└───────┴──────────────────────┘

timeSeriesGroupToTags

Introducida en: v26.1.0

Devuelve los nombres y valores de las etiquetas asociadas a un grupo especificado. Véase también la función timeSeriesTagsToGroup().

Sintaxis

timeSeriesGroupToTags(group)

Alias: timeSeriesTagsGroupToTags

Argumentos

  • group — Un grupo de etiquetas. UInt64

Valor devuelto

Devuelve un array de pares (tag_name, tag_value). El array devuelto siempre está ordenado por tag_name y nunca contiene el mismo tag_name más de una vez. Array(Tuple(String, String))

Ejemplos

Ejemplo

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
       timeSeriesGroupToTags(group) AS sorted_tags,
       timeSeriesTagsToGroup(sorted_tags) AS same_group,
       throwIf(same_group != group)
┌─group─┬─sorted_tags────────────────────────────────────────────────────────┬─same_group─┬─throwIf(notEquals(same_group, group))─┐
│     1 │ [('__name__','http_requests_count'),('env','dev'),('region','eu')] │          1 │                                     0 │
└───────┴────────────────────────────────────────────────────────────────────┴────────────┴───────────────────────────────────────┘

timeSeriesIdToGroup

Introducido en: v26.1.0

Devuelve los nombres y valores de las etiquetas asociadas a un identificador de serie temporal especificado. Véase también la función timeSeriesStoreTags().

Sintaxis

timeSeriesIdToGroup(id)

Alias: timeSeriesIdToTagsGroup

Argumentos

  • id — Identificador de una serie temporal. Debe ser del mismo tipo que se usó al llamar a timeSeriesStoreTags(). Any

Valor devuelto

Devuelve un grupo de etiquetas asociado al identificador id de una serie temporal. UInt64

Ejemplos

Ejemplo

SELECT 8374283493092 AS id,
       timeSeriesStoreTags(id, [('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS same_id,
       throwIf(same_id != id),
       timeSeriesIdToGroup(same_id) AS group,
       timeSeriesGroupToTags(group)
┌────────────id─┬───────same_id─┬─throwIf(notEquals(same_id, id))─┬─group─┬─timeSeriesGroupToTags(group)───────────────────────────────────────┐
│ 8374283493092 │ 8374283493092 │                               0 │     1 │ [('__name__','http_requests_count'),('env','dev'),('region','eu')] │
└───────────────┴───────────────┴─────────────────────────────────┴───────┴────────────────────────────────────────────────────────────────────┘

timeSeriesIdToTags

Introducido en: v25.8.0

Devuelve las etiquetas asociadas al identificador especificado de una serie temporal. Véase también la función timeSeriesStoreTags().

Sintaxis

timeSeriesIdToTags(id)

Argumentos

  • id — Identificador de una serie temporal. Debe ser del mismo tipo que se utilizó al llamar a timeSeriesStoreTags(). Any

Valor devuelto

Devuelve un array de pares (tag_name, tag_value). El array devuelto siempre está ordenado por tag_name y nunca contiene el mismo tag_name más de una vez. Array(Tuple(String, String))

Ejemplos

Ejemplo

SELECT 8374283493092 AS id,
       timeSeriesStoreTags(id, [('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS same_id,
       throwIf(same_id != id),
       timeSeriesIdToTags(same_id)
┌────────────id─┬───────same_id─┬─throwIf(notEquals(same_id, id))─┬─timeSeriesIdToTags(same_id)────────────────────────────────────────┐
│ 8374283493092 │ 8374283493092 │                               0 │ [('__name__','http_requests_count'),('env','dev'),('region','eu')] │
└───────────────┴───────────────┴─────────────────────────────────┴────────────────────────────────────────────────────────────────────┘

timeSeriesJoinTags

Introducido en: v26.1.0

Une los valores de las etiquetas especificadas extraídos de un grupo de etiquetas. La función inserta un separador entre los valores unidos y devuelve un nuevo grupo de etiquetas con la etiqueta dest_tag establecida con el valor unido. Esta función imita la lógica de la función de Prometheus label_join().

Sintaxis

timeSeriesJoinTags(group, dest_tag, separator, src_tags)

Argumentos

  • group — Un grupo de etiquetas. UInt64
  • dest_tag — El nombre de una etiqueta con el resultado combinado que se añadirá al group. String
  • separator — Un separador para insertar entre los valores combinados. String
  • src_tags — Los nombres de las etiquetas de origen cuyos valores se combinarán. Array(String)

Valor devuelto

Devuelve un nuevo grupo de etiquetas con la etiqueta dest_tag establecida con el resultado combinado. UInt64

Ejemplos

Ejemplo

SELECT timeSeriesTagsToGroup([('__name__', 'up'), ('job', 'api-server'), ('src1', 'a'), ('src2', 'b'), ('src3', 'c')]) AS group,
       timeSeriesJoinTags(group, 'foo', ',', ['src1', 'src2', 'src3']) AS result_group,
       timeSeriesGroupToTags(result_group)
┌─group─┬─result_group─┬─timeSeriesGroupToTags(result_group)─────────────────────────────────────────────────────────────┐
│     1 │            2 │ [('__name__','up'),('foo','a,b,c'),('job','api-server'),('src1','a'),('src2','b'),('src3','c')] │
└───────┴──────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────┘

timeSeriesMetricTypeToSuffixes

Introducido en: v26.8.0

Devuelve los sufijos de los nombres de métricas de una familia de métricas del tipo de Prometheus especificado.

Sintaxis

timeSeriesMetricTypeToSuffixes(type)

Argumentos

  • type: tipo de métrica de Prometheus (counter, gauge, histogram, summary, …). String

Valor devuelto

Devuelve los sufijos de una familia de ese tipo. Array(String)

Ejemplos

Ejemplo

SELECT timeSeriesMetricTypeToSuffixes('histogram') AS suffixes;
┌─suffixes────────────────────┐
│ ['_bucket','_count','_sum'] │
└─────────────────────────────┘

timeSeriesRange

Introducido en: v25.8.0

Genera un rango de marcas de tiempo [start_timestamp, start_timestamp + step, start_timestamp + 2 * step, …, end_timestamp].

Si start_timestamp es igual a end_timestamp, la función devuelve un array de un solo elemento que contiene [start_timestamp].

La función timeSeriesRange() es similar a la función range.

Sintaxis

timeSeriesRange(start_timestamp, end_timestamp, step)

Argumentos

Valor devuelto

Devuelve un rango de marcas de tiempo. Array(DateTime64)

Ejemplos

Ejemplo de uso

SELECT timeSeriesRange('2025-06-01 00:00:00'::DateTime64(3), '2025-06-01 00:01:00'::DateTime64(3), 30)
┌─timeSeriesRange(CAST('2025-06-01 00:00:00', 'DateTime64(3)'), CAST('2025-06-01 00:01:00', 'DateTime64(3)'), 30)─┐
│ ['2025-06-01 00:00:00.000','2025-06-01 00:00:30.000','2025-06-01 00:01:00.000']                                 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

timeSeriesRemoveAllTagsExcept

Introducido en: v26.1.0

Elimina todas las etiquetas de un grupo, excepto las especificadas. Véase también la función timeSeriesRemoveTag(), timeSeriesRemoveTags().

Sintaxis

timeSeriesRemoveAllTagsExcept(group, tags_to_keep)

Argumentos

  • group — Un grupo de etiquetas. UInt64
  • tags_to_keep — Los nombres de las etiquetas que se conservarán en el grupo. Array(String)

Valor devuelto

Un nuevo grupo de etiquetas en el que solo se conservan las etiquetas especificadas. UInt64

Ejemplos

Ejemplo

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
       timeSeriesRemoveAllTagsExcept(group, ['env']) AS result_group,
       timeSeriesGroupToTags(result_group)
┌─group─┬─result_group─┬─timeSeriesGroupToTags(result_group)─┐
│     1 │            2 │ [('env','dev')]                     │
└───────┴──────────────┴─────────────────────────────────────┘

timeSeriesRemoveTag

Introducido en: v26.1.0

Elimina una etiqueta especificada de un grupo de etiquetas. Si esa etiqueta no existe en el grupo, el grupo se devuelve sin cambios. Véase también la función timeSeriesRemoveTags(), timeSeriesRemoveAllTagsExcept().

Sintaxis

timeSeriesRemoveTag(group, tag_to_remove)

Argumentos

  • group — Un grupo de etiquetas. UInt64
  • tag_to_remove — El nombre de la etiqueta que se debe eliminar del grupo. String

Valor devuelto

Un nuevo grupo de etiquetas sin la etiqueta especificada. UInt64

Ejemplos

Ejemplo

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group_of_3,
       timeSeriesRemoveTag(group_of_3, '__name__') AS group_of_2,
       timeSeriesGroupToTags(group_of_2),
       timeSeriesRemoveTag(group_of_2, 'env') AS group_of_1,
       timeSeriesGroupToTags(group_of_1),
       timeSeriesRemoveTag(group_of_1, 'region') AS empty_group,
       timeSeriesGroupToTags(empty_group)
┌─group_of_3─┬─group_of_2─┬─timeSeriesGroupToTags(group_of_2)─┬─group_of_1─┬─timeSeriesGroupToTags(group_of_1)─┬─empty_group─┬─timeSeriesGroupToTags(empty_group)─┐
│          1 │          2 │ [('env','dev'),('region','eu')]   │          3 │ [('region','eu')]                 │           0 │ []                                 │
└────────────┴────────────┴───────────────────────────────────┴────────────┴───────────────────────────────────┴─────────────┴────────────────────────────────────┘

timeSeriesRemoveTags

Introducido en: v26.1.0

Elimina las etiquetas especificadas de un grupo de etiquetas. Si algunas de las etiquetas especificadas no están en el grupo de etiquetas, la función las ignora. Véase también la función timeSeriesRemoveTag(), timeSeriesRemoveAllTagsExcept().

Sintaxis

timeSeriesRemoveTags(group, tags_to_remove)

Argumentos

  • group — Un grupo de etiquetas. UInt64
  • tags_to_remove — Los nombres de las etiquetas que se deben eliminar del grupo. Array(String)

Valor devuelto

Un nuevo grupo de etiquetas sin las etiquetas especificadas. UInt64

Ejemplos

Ejemplo

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group_of_3,
       timeSeriesRemoveTags(group_of_3, ['env', 'region']) AS group_of_1,
       timeSeriesGroupToTags(group_of_1),
       timeSeriesRemoveTags(group_of_1, ['__name__', 'nonexistent']) AS empty_group,
       timeSeriesGroupToTags(empty_group)
┌─group_of_3─┬─group_of_1─┬─timeSeriesGroupToTags(group_of_1)────┬─empty_group─┬─timeSeriesGroupToTags(empty_group)─┐
│          1 │          2 │ [('__name__','http_requests_count')] │           0 │ []                                 │
└────────────┴────────────┴──────────────────────────────────────┴─────────────┴────────────────────────────────────┘

timeSeriesReplaceTag

Introducido en: v26.1.0

Aplica la expresión regular regex al valor de la etiqueta src_tag. Si hay coincidencia, el valor de la etiqueta dest_tag en el grupo devuelto será la expansión de replacement, junto con las etiquetas originales de la entrada. Esta función imita la lógica de la función de Prometheus label_replace().

Sintaxis

timeSeriesReplaceTag(group, dest_tag, replacement, src_tag, regex)

Argumentos

  • group — Un grupo de etiquetas. UInt64
  • dest_tag — El nombre de una etiqueta de destino para obtener el grupo resultante. String
  • replacement — Un patrón de reemplazo que puede contener 1, 2 o $name para hacer referencia a grupos de captura en la expresión regular 'regex'. String
  • src_tag — El nombre de una etiqueta cuyo valor se usa para hacer coincidir la expresión regular 'regex'. String
  • regex — Una expresión regular. String

Valor devuelto

Un nuevo grupo de etiquetas al que puede haberse añadido dest_tag. UInt64

Ejemplos

Ejemplo

SELECT timeSeriesTagsToGroup([('__name__', 'up'), ('job', 'api-server'), ('service', 'a:c')]) AS group,
       timeSeriesReplaceTag(group, 'foo', '$1', 'service', '(.*):.*') AS result_group,
       timeSeriesGroupToTags(result_group)
┌─group─┬─result_group─┬─timeSeriesGroupToTags(result_group)────────────────────────────────────┐
│     1 │            2 │ [('__name__','up'),('foo','a'),('job','api-server'),('service','a:c')] │
└───────┴──────────────┴────────────────────────────────────────────────────────────────────────┘

timeSeriesStoreTags

Introducido en: v25.8.0

Almacena en el contexto de la consulta una correspondencia entre un identificador especificado de una serie temporal y un conjunto de etiquetas. Las funciones timeSeriesIdToTags() y timeSeriesIdToGroup() se pueden usar para acceder a esta correspondencia más adelante durante la ejecución de la consulta.

Sintaxis

timeSeriesStoreTags(id, tags_array, separate_tag_name_1, separate_tag_value_1, ...)

Argumentos

Valor devuelto

Devuelve el identificador de una serie temporal (es decir, solo el primer argumento).

Ejemplos

Ejemplo

SELECT 8374283493092 AS id,
       timeSeriesStoreTags(id, [('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS same_id,
       throwIf(same_id != id),
       timeSeriesIdToTags(same_id),
       timeSeriesGroupToTags(timeSeriesIdToGroup(same_id))
┌────────────id─┬───────same_id─┬─throwIf(notEquals(same_id, id))─┬─timeSeriesIdToTags(same_id)────────────────────────────────────────┬─timeSeriesGroupToTags(timeSeriesIdToGroup(same_id))────────────────┐
│ 8374283493092 │ 8374283493092 │                               0 │ [('__name__','http_requests_count'),('env','dev'),('region','eu')] │ [('__name__','http_requests_count'),('env','dev'),('region','eu')] │
└───────────────┴───────────────┴─────────────────────────────────┴────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────┘

timeSeriesTagsToGroup

Introducido en: v26.1.0

Devuelve un grupo de etiquetas asociado a las etiquetas especificadas. Si se encuentra el mismo grupo de etiquetas varias veces durante la ejecución de la consulta, la función devuelve el mismo grupo. Para un conjunto vacío de etiquetas, la función siempre devuelve 0. Véase también la función timeSeriesGroupToTags().

Sintaxis

timeSeriesTagsToGroup(tags_array, tag_name_1, tag_value_1, tag_name2, tag_value2, ...)

Argumentos

Valor devuelto

Devuelve un grupo de etiquetas asociado a las etiquetas especificadas. UInt64

Ejemplos

Ejemplo

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group1,
       timeSeriesTagsToGroup([], '__name__', 'http_failures') AS group2,
       timeSeriesTagsToGroup([]) AS empty_group,
       timeSeriesTagsToGroup([], '__name__', 'http_failures') AS same_group2,
       throwIf(same_group2 != group2),
       timeSeriesGroupToTags(group2)
┌─group1─┬─group2─┬─empty_group─┬─same_group2─┬─throwIf(notEquals(same_group2, group2))─┬─timeSeriesGroupToTags(group2)──┐
│      1 │      2 │           0 │           2 │                                       0 │ [('__name__','http_failures')] │
└────────┴────────┴─────────────┴─────────────┴─────────────────────────────────────────┴────────────────────────────────┘

timeSeriesTagsToMap

Introducido en: v26.8.0

Combina un array de pares (tag_name, tag_value) con argumentos independientes de nombre/valor de etiqueta en un único mapa. El resultado se ordena por nombre de etiqueta y se eliminan los nombres de etiqueta duplicados y las etiquetas con valores vacíos.

Sintaxis

timeSeriesTagsToMap(tags_array, tag_name_1, tag_value_1, tag_name_2, tag_value_2, ...)

Argumentos

Valor devuelto

Devuelve un map de nombres de etiquetas a valores de etiquetas, ordenado por nombre de etiqueta y sin nombres de etiquetas duplicados ni valores de etiquetas vacíos. Map(String, String)

Ejemplos

Ejemplo

SELECT timeSeriesTagsToMap([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS tags
┌─tags─────────────────────────────────────────────────────────┐
│ {'__name__':'http_requests_count','env':'dev','region':'eu'} │
└──────────────────────────────────────────────────────────────┘

timeSeriesThrowDuplicateSeriesIf

Introducido en: v26.2.0

Comprueba la condition y, si es true, lanza una excepción con el siguiente mensaje: Multiple series have the same tags <tags>, duplicate series in the same result set are not allowed. Si la condition es false, la función devuelve 0. Esta función es similar a throwIf(), pero usa un código de error diferente y presenta el mensaje de error con un formato distinto.

Sintaxis

timeSeriesThrowDuplicateSeriesIf(condition, group)

Argumentos

  • condition — Condición que se va a comprobar; normalmente contiene la función count() UInt8
  • group — Grupo de etiquetas. UInt64

Valor devuelto

Devuelve 0. UInt8

Ejemplos

Una serie por grupo

CREATE TABLE test(tags Array(Tuple(String, String))) engine=Memory;

INSERT INTO test VALUES ([('__name__', 'up')]);

SELECT timeSeriesThrowDuplicateSeriesIf(count() > 1, timeSeriesTagsToGroup(tags))
FROM test
GROUP BY timeSeriesTagsToGroup(tags);
0

Dos series con las mismas etiquetas

INSERT INTO test VALUES ([('__name__', 'up')]);

SELECT timeSeriesThrowDuplicateSeriesIf(count() > 1, timeSeriesTagsToGroup(tags))
FROM test
GROUP BY timeSeriesTagsToGroup(tags);
Received exception:
Code: 768. DB::Exception: Multiple series have the same tags {'__name__': 'up'}, duplicate series in the same result set are not allowed. (DUPLICATE_TIME_SERIES)
Navigation