As funções abaixo foram projetadas para uso com funções de agregação timeSeries*(), como
timeSeriesInstantRateToGrid,
timeSeriesLastToGrid,
entre outras.
seriesDecomposeSTL
Introduzido em: v24.1.0
Decompõe dados de série temporal usando STL (Procedimento de Decomposição Sazonal-Tendência Baseado em Loess) em sazonalidade, tendência e um componente residual.
Sintaxe
seriesDecomposeSTL(series, period)Argumentos
series— Um array de valores numéricosArray((U)Int8/16/32/64)ouArray(Float*)period— Um inteiro positivoUInt8/16/32/64
Valor retornado
Retorna um array de quatro arrays, em que o primeiro contém os componentes sazonais, o segundo, a tendência, o terceiro, o componente residual, e o quarto, o componente de linha de base (sazonal + tendência). Array(Array(Float32), Array(Float32), Array(Float32), Array(Float32))
Exemplos
Decompor dados de série temporal usando 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
Introduzido em: v24.2.0
Detecta valores atípicos em dados de série temporal usando Tukey Fences.
Sintaxe
seriesOutliersDetectTukey(series[, min_percentile, max_percentile, K])Argumentos
series— Um array de valores numéricos.Array((UInt8/16/32/64))ouArray(Float*)min_percentile— Opcional. O percentil mínimo a ser usado para calcular o intervalo interquartil (IQR). O valor deve estar no intervalo [0.02,0.98]. O padrão é 0.25.Float*max_percentile— Opcional. O percentil máximo a ser usado para calcular o intervalo interquartil (IQR). O valor deve estar no intervalo [0.02,0.98]. O padrão é 0.75.Float*K— Opcional. Valor constante não negativo para detectar valores atípicos leves ou mais severos. O valor padrão é 1.5.Float*
Valor retornado
Retorna um array com o mesmo comprimento do array de entrada, em que cada valor representa a pontuação de uma possível anomalia do elemento correspondente na série. Uma pontuação diferente de zero indica uma possível anomalia. Array(Float32)
Exemplos
Detecção 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] │
└────────────────────────────────────┘Detecção de valores atípicos com 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
Introduzido em: v23.12.0
Encontra o período dos dados de série temporal fornecidos usando FFT - Transformada rápida de Fourier
Sintaxe
seriesPeriodDetectFFT(series)Argumentos
series— Um array de valores numéricos.Array((U)Int8/16/32/64)ouArray(Float*)
Valor retornado
Retorna um valor real igual ao período da série. NaN quando o número de pontos de dados é menor que quatro. Float64
Exemplos
Detecção de período com padrão simples
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 │
└─────────┘Detecção de período usando padrão complexo
SELECT seriesPeriodDetectFFT(arrayMap(x -> abs((x % 6) - 3), range(1000))) AS print_0┌─print_0─┐
│ 6 │
└─────────┘timeSeriesCopyTag
Introduzido em: v26.1.0
Copia uma tag específica de um grupo de tags (src_group) para outro (dest_group).
A função substitui todos os valores anteriores da tag copiada em dest_group.
Se a tag copiada não estiver presente em src_group, a função também a removerá de dest_group.
A função imita a lógica de cópia dos modificadores
group left/group right do Prometheus.
Sintaxe
timeSeriesCopyTag(dest_group, src_group, tag_to_copy)Argumentos
dest_group— O grupo de tags de destino.UInt64src_group— O grupo de tags de origem.UInt64tag_to_copy— O nome da tag a ser copiada.String
Valor retornado
Retorna um grupo de tags que contém as tags de dest_group, junto com as tags copiadas de src_group. UInt64
Exemplos
Exemplo
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
Introduzido em: v26.1.0
Copia as tags especificadas de um grupo de tags (src_group) para outro (dest_group).
A função substitui quaisquer valores anteriores das tags copiadas em dest_group.
Se algumas das tags copiadas não estiverem presentes em src_group, a função também as removerá de dest_group.
A função reproduz a lógica de cópia dos modificadores
group left/group right do Prometheus.
Sintaxe
timeSeriesCopyTags(dest_group, src_group, tags_to_copy)Argumentos
dest_group— O grupo de tags de destino.UInt64src_group— O grupo de tags de origem.UInt64tags_to_copy— Os nomes das tags a copiar.Array(String)
Valor retornado
Retorna um grupo de tags que contém as tags de dest_group junto com as tags copiadas de src_group. UInt64
Exemplos
Exemplo
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
Introduzida na versão: v26.1.0
Extrai o valor de uma tag específica do grupo. Retorna NULL se não for encontrada. Veja também a função timeSeriesGroupToTags().
Sintaxe
timeSeriesExtractTag(group)Argumentos
Valor retornado
Retorna o valor da tag especificada. Nullable(String)
Exemplos
Exemplo
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
Introduzido em: v25.8.0
Converte um array de valores [x1, x2, x3, ...] em um array de tuplas
[(start_timestamp, x1), (start_timestamp + step, x2), (start_timestamp + 2 * step, x3), ...].
O timestamp atual é incrementado em step até ficar maior que end_timestamp
Se a quantidade de valores não corresponder à quantidade de timestamps, a função lança uma exceção.
Valores NULL em [x1, x2, x3, ...] são ignorados, mas o timestamp atual ainda é incrementado.
Por exemplo, para [value1, NULL, x2], a função retorna [(start_timestamp, x1), (start_timestamp + 2 * step, x2)].
Sintaxe
timeSeriesFromGrid(start_timestamp, end_timestamp, step, values)Argumentos
start_timestamp— Início da grade temporal.DateTime64ouDateTimeouUInt32end_timestamp— Fim da grade temporal.DateTime64ouDateTimeouUInt32step— passo da grade temporal em segundosDecimal64ouDecimal32ouUInt32/64values— Array de valoresArray(Float*)ouArray(Nullable(Float*))
Valor retornado
Retorna valores do array de origem combinados com timestamps em uma grade temporal regular descrita por start_timestamp e step. Array(Tuple(DateTime64, Float64))
Exemplos
Exemplo 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
Introduzido em: v26.4.0
Retorna uma chave de amostragem UInt64 estável derivada das tags de um grupo especificado.
O valor é determinístico: tags de entrada idênticas sempre produzem a mesma chave.
Ela foi projetada para ser usada como chave de ordenação para operadores de amostragem como limitk e limit_ratio.
Sintaxe
timeSeriesGroupToSamplingKey(group)Argumentos
group— Um grupo de tags.UInt64
Valor retornado
Um hash UInt64 estável derivado das tags associadas ao grupo. UInt64
Exemplos
Exemplo
SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
timeSeriesGroupToSamplingKey(group) AS sampling_key┌─group─┬─────────sampling_key─┐
│ 1 │ 15511321834549144507 │
└───────┴──────────────────────┘timeSeriesGroupToTags
Introduzido em: v26.1.0
Retorna os nomes e valores das tags associadas a um grupo especificado. Veja também a função timeSeriesTagsToGroup().
Sintaxe
timeSeriesGroupToTags(group)Nomes alternativos: timeSeriesTagsGroupToTags
Argumentos
group— Um grupo de tags.UInt64
Valor retornado
Retorna um array de pares (tag_name, tag_value).
O array retornado é sempre ordenado por tag_name e nunca contém o mesmo tag_name mais de uma vez.
Array(Tuple(String, String))
Exemplos
Exemplo
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
Introduzido em: v26.1.0
Retorna os nomes e os valores das tags associadas ao identificador especificado de uma série temporal. Consulte também a função timeSeriesStoreTags().
Sintaxe
timeSeriesIdToGroup(id)nome alternativo: timeSeriesIdToTagsGroup
Argumentos
id— Identificador de uma série temporal. Deve ser do mesmo tipo usado ao chamar timeSeriesStoreTags().Any
Valor retornado
Retorna um grupo de tags associado ao identificador id de uma série temporal. UInt64
Exemplos
Exemplo
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
Introduzido em: v25.8.0
Retorna as tags associadas a um identificador específico de uma série temporal. Veja também a função timeSeriesStoreTags().
Sintaxe
timeSeriesIdToTags(id)Argumentos
id— Identificador de uma série temporal. Deve ser do mesmo tipo usado ao chamar timeSeriesStoreTags().Any
Valor retornado
Retorna um array de pares (tag_name, tag_value).
O array retornado é sempre ordenado por tag_name e nunca contém o mesmo tag_name mais de uma vez.
Array(Tuple(String, String))
Exemplos
Exemplo
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
Introduzido em: v26.1.0
Une os valores das tags especificadas extraídas de um grupo de tags.
A função insere um separador entre os valores concatenados e retorna um novo grupo de tags
com a tag dest_tag definida como o valor concatenado.
Esta função reproduz a lógica da função do Prometheus
label_join().
Sintaxe
timeSeriesJoinTags(group, dest_tag, separator, src_tags)Argumentos
group— Um grupo de tags.UInt64dest_tag— O nome de uma tag com o resultado concatenado que será adicionada aogroup.Stringseparator— Um separador a ser inserido entre os valores concatenados.Stringsrc_tags— Os nomes das tags de origem com valores que serão concatenados.Array(String)
Valor retornado
Retorna um novo grupo de tags com a tag dest_tag definida como o resultado concatenado. UInt64
Exemplos
Exemplo
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
Introduzido em: v26.8.0
Retorna os sufixos de nomes de métricas de uma família de métricas do tipo Prometheus especificado.
Sintaxe
timeSeriesMetricTypeToSuffixes(type)Argumentos
type— Tipo de métrica do Prometheus (counter,gauge,histogram,summary, …).String
Valor retornado
Retorna os sufixos de uma família desse tipo. Array(String)
Exemplos
Exemplo
SELECT timeSeriesMetricTypeToSuffixes('histogram') AS suffixes;┌─suffixes────────────────────┐
│ ['_bucket','_count','_sum'] │
└─────────────────────────────┘timeSeriesRange
Introduzido em: v25.8.0
Gera uma sequência de timestamps [start_timestamp, start_timestamp + step, start_timestamp + 2 * step, …, end_timestamp].
Se start_timestamp for igual a end_timestamp, a função retorna um array de 1 elemento contendo [start_timestamp].
A função timeSeriesRange() é semelhante à função range.
Sintaxe
timeSeriesRange(start_timestamp, end_timestamp, step)Argumentos
start_timestamp— Início do intervalo.DateTime64ouDateTimeouUInt32end_timestamp— Fim do intervalo.DateTime64ouDateTimeouUInt32step— Passo do intervalo, em segundos.UInt32/64ouDecimal32/64
Valor retornado
Retorna um intervalo de timestamps. Array(DateTime64)
Exemplos
Exemplo 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
Introduzido em: v26.1.0
Remove todas as tags, exceto as especificadas, de um grupo de tags. Veja também a função timeSeriesRemoveTag(), timeSeriesRemoveTags().
Sintaxe
timeSeriesRemoveAllTagsExcept(group, tags_to_keep)Argumentos
group— Um grupo de tags.UInt64tags_to_keep— Os nomes das tags a serem mantidas no grupo.Array(String)
Valor retornado
Um novo grupo de tags contendo apenas as tags especificadas. UInt64
Exemplos
Exemplo
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
Introduzido em: v26.1.0
Remove uma tag específica de um grupo de tags. Se essa tag não existir no grupo, ele será retornado sem alterações. Veja também as funções timeSeriesRemoveTags(), timeSeriesRemoveAllTagsExcept().
Sintaxe
timeSeriesRemoveTag(group, tag_to_remove)Argumentos
Valor retornado
Um novo grupo de tags sem a tag especificada. UInt64
Exemplos
Exemplo
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
Introduzido em: v26.1.0
Remove as tags especificadas de um grupo de tags. Se algumas das tags especificadas não estiverem no grupo, a função as ignorará. Consulte também a função timeSeriesRemoveTag(), timeSeriesRemoveAllTagsExcept().
Sintaxe
timeSeriesRemoveTags(group, tags_to_remove)Argumentos
group— Um grupo de tags.UInt64tags_to_remove— Os nomes das tags a serem removidas do grupo.Array(String)
Valor retornado
Um novo grupo de tags sem as tags especificadas. UInt64
Exemplos
Exemplo
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
Introduzido em: v26.1.0
Compara a expressão regular regex com o valor da tag src_tag.
Se houver correspondência, o valor da tag dest_tag no grupo retornado será a expansão de replacement,
junto com as tags originais da entrada.
Esta função reproduz a lógica da função do Prometheus
label_replace().
Sintaxe
timeSeriesReplaceTag(group, dest_tag, replacement, src_tag, regex)Argumentos
group— Um grupo de tags.UInt64dest_tag— O nome de uma tag de destino para receber o grupo resultante.Stringreplacement— Um padrão de substituição; pode conter1,2 ou $name para se referir a grupos de captura na expressão regular 'regex'.Stringsrc_tag— O nome de uma tag cujo valor é usado para fazer a correspondência com a expressão regular 'regex'.Stringregex— Uma expressão regular.String
Valor retornado
Um novo grupo de tags, possivelmente com dest_tag adicionada. UInt64
Exemplos
Exemplo
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
Introduzido em: v25.8.0
Armazena, no contexto da consulta, um mapeamento entre um identificador especificado de série temporal e um conjunto de tags. As funções timeSeriesIdToTags() e timeSeriesIdToGroup() podem ser usadas para acessar esse mapeamento posteriormente durante a execução da consulta.
Sintaxe
timeSeriesStoreTags(id, tags_array, separate_tag_name_1, separate_tag_value_1, ...)Argumentos
id— Identificador de uma série temporal. Pode ser de qualquer tipo comparável. Linhas com identificadores NULL são ignoradas.Anytags_array— Array de pares (tag_name, tag_value).Array(Tuple(String, String))ouNULLseparate_tag_name_i— O nome de uma tag.StringouFixedStringseparate_tag_value_i— O valor de uma tag.StringouFixedStringouNullable(String)
Valor retornado
Retorna o identificador de uma série temporal (isto é, apenas o primeiro argumento).
Exemplos
Exemplo
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
Introduzido em: v26.1.0
Retorna um grupo de tags associado às tags especificadas. Se o mesmo grupo de tags for encontrado várias vezes durante a execução da consulta, a função retornará o mesmo grupo. Para um conjunto vazio de tags, a função sempre retorna 0. Veja também a função timeSeriesGroupToTags().
Sintaxe
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))ouNULLtag_name_i— O nome de uma tag.StringouFixedStringtag_value_i— O valor de uma tag.StringouFixedStringouNullable(String)
Valor retornado
Retorna um grupo de tags associado às tags especificadas. UInt64
Exemplos
Exemplo
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
Introduzido em: v26.8.0
Combina um array de pares (tag_name, tag_value) com argumentos separados de nome e valor de tag em um único map.
O resultado é ordenado por nome de tag, e nomes de tag duplicados e tags com valores vazios são removidos.
Sintaxe
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)),Map(String, String)ouNULLtag_name_i— O nome de uma tag.StringouFixedStringtag_value_i— O valor de uma tag.String,FixedStringouNullable(String)
Valor retornado
Retorna um map que associa nomes de tags a seus valores, ordenado por nome de tag, sem nomes de tags duplicados nem valores de tags vazios.
Map(String, String)
Exemplos
Exemplo
SELECT timeSeriesTagsToMap([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS tags┌─tags─────────────────────────────────────────────────────────┐
│ {'__name__':'http_requests_count','env':'dev','region':'eu'} │
└──────────────────────────────────────────────────────────────┘timeSeriesThrowDuplicateSeriesIf
Introduzido em: v26.2.0
Verifica a condition e, se ela for verdadeira, lança uma exceção com a seguinte mensagem
Multiple series have the same tags <tags>, duplicate series in the same result set are not allowed.
Se a condition for falsa, a função retorna 0.
Esta função é semelhante a throwIf(),
mas usa um código de erro diferente e formata a mensagem de erro de outra maneira.
Sintaxe
timeSeriesThrowDuplicateSeriesIf(condition, group)Argumentos
condition— Condição a ser verificada, geralmente contém a função count()UInt8group— Grupo de tags.UInt64
Valor retornado
Retorna 0. UInt8
Exemplos
Uma série 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);0Duas séries com as mesmas tags
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)