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
series— Un array de valores numéricosArray((U)Int8/16/32/64)oArray(Float*)period— Un entero positivoUInt8/16/32/64
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))oArray(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
series— Un array de valores numéricos.Array((U)Int8/16/32/64)oArray(Float*)
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.UInt64src_group— El grupo de etiquetas de origen.UInt64tag_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.UInt64src_group— El grupo de etiquetas de origen.UInt64tags_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.UInt64tag_to_extract— El nombre de una etiqueta que se extraerá del grupoString
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
start_timestamp— Inicio de la rejilla.DateTime64oDateTimeoUInt32end_timestamp— Fin de la rejilla.DateTime64oDateTimeoUInt32step— Paso de la rejilla en segundosDecimal64oDecimal32oUInt32/64values— Array de valoresArray(Float*)oArray(Nullable(Float*))
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.UInt64dest_tag— El nombre de una etiqueta con el resultado combinado que se añadirá algroup.Stringseparator— Un separador para insertar entre los valores combinados.Stringsrc_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
start_timestamp— Inicio del rango.DateTime64oDateTimeoUInt32end_timestamp— Fin del rango.DateTime64oDateTimeoUInt32step— Incremento del rango en segundosUInt32/64oDecimal32/64
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.UInt64tags_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.UInt64tag_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.UInt64tags_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.UInt64dest_tag— El nombre de una etiqueta de destino para obtener el grupo resultante.Stringreplacement— Un patrón de reemplazo que puede contener1,2 o $name para hacer referencia a grupos de captura en la expresión regular 'regex'.Stringsrc_tag— El nombre de una etiqueta cuyo valor se usa para hacer coincidir la expresión regular 'regex'.Stringregex— 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
id— Identificador de una serie temporal. Puede ser de cualquier tipo comparable. Se omiten las filas con identificadores NULL.Anytags_array— Array de pares (tag_name, tag_value).Array(Tuple(String, String))oNULLseparate_tag_name_i— El nombre de una etiqueta.StringoFixedStringseparate_tag_value_i— El valor de una etiqueta.StringoFixedStringoNullable(String)
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
tags_array— Array de pares (tag_name, tag_value).Array(Tuple(String, String))oNULLtag_name_i— El nombre de una etiqueta.StringoFixedStringtag_value_i— El valor de una etiqueta.StringoFixedStringoNullable(String)
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
tags_array— Array de pares (tag_name, tag_value).Array(Tuple(String, String))oMap(String, String)oNULLtag_name_i— El nombre de una etiqueta.StringoFixedStringtag_value_i— El valor de una etiqueta.StringoFixedStringoNullable(String)
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()UInt8group— 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);0Dos 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)