Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Fonctions de manipulation des séries temporelles

Les fonctions ci-dessous sont conçues pour être utilisées avec les fonctions d’agrégation timeSeries*(), telles que timeSeriesInstantRateToGrid, timeSeriesLastToGrid, etc.

seriesDecomposeSTL

Introduite dans : v24.1.0

Décompose des données de série temporelle à l’aide de STL (Seasonal-Trend Decomposition Procedure Based on Loess) en une composante saisonnière, une tendance et une composante résiduelle.

Syntaxe

seriesDecomposeSTL(series, period)

Arguments

Valeur renvoyée

Renvoie un tableau de quatre tableaux : le premier contient les composantes saisonnières, le deuxième la tendance, le troisième la composante résiduelle et le quatrième la composante de base (saisonnière + tendance). Array(Array(Float32), Array(Float32), Array(Float32), Array(Float32))

Exemples

Décomposer une série de données à l’aide de 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

Introduite dans : v24.2.0

Détecte les valeurs aberrantes dans des données de série temporelle à l’aide des bornes de Tukey.

Syntaxe

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

Arguments

  • series — Un tableau de valeurs numériques. Array((UInt8/16/32/64)) ou Array(Float*)
  • min_percentile — Facultatif. Percentile minimal à utiliser pour calculer l'écart interquartile (IQR). La valeur doit être comprise dans l'intervalle [0.02,0.98]. La valeur par défaut est 0.25. Float*
  • max_percentile — Facultatif. Percentile maximal à utiliser pour calculer l'écart interquartile (IQR). La valeur doit être comprise dans l'intervalle [0.02,0.98]. La valeur par défaut est 0.75. Float*
  • K — Facultatif. Constante non négative permettant de détecter des valeurs aberrantes modérées ou plus prononcées. La valeur par défaut est 1.5. Float*

Valeur renvoyée

Renvoie un tableau de la même longueur que le tableau d'entrée, dans lequel chaque valeur représente le score d'anomalie possible de l'élément correspondant de la série. Un score non nul indique une anomalie possible. Array(Float32)

Exemples

Détection de base des valeurs aberrantes

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] │
└────────────────────────────────────┘

Détection des valeurs aberrantes avec des paramètres personnalisés

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

Introduit dans : v23.12.0

Détecte la période des données de série temporelle fournies à l’aide de la FFT - transformée de Fourier rapide

Syntaxe

seriesPeriodDetectFFT(series)

Arguments

Valeur renvoyée

Renvoie une valeur réelle égale à la période de la série. NaN lorsque le nombre de points de données est inférieur à quatre. Float64

Exemples

Détection de période avec un motif 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 │
└─────────┘

Détection de période avec un motif complexe

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

timeSeriesCopyTag

Introduit dans : v26.1.0

Copie un tag spécifié d’un groupe de tags (src_group) vers un autre (dest_group). La fonction remplace toute valeur précédente du tag copié dans dest_group. Si le tag copié n’est pas présent dans src_group, la fonction le supprime également de dest_group. La fonction reproduit la logique de copie des modificateurs Prometheus group left/group right.

Syntaxe

timeSeriesCopyTag(dest_group, src_group, tag_to_copy)

Arguments

  • dest_group — Le groupe de tags de destination. UInt64
  • src_group — Le groupe de tags source. UInt64
  • tag_to_copy — Le nom du tag à copier. String

Valeur renvoyée

Renvoie un groupe de tags contenant ceux de dest_group, ainsi que les tags copiés depuis src_group. UInt64

Exemples

Exemple

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

Introduit dans : v26.1.0

Copie les tags spécifiés d’un groupe de tags (src_group) vers un autre (dest_group). La fonction remplace toutes les valeurs précédentes des tags copiés dans dest_group. Si certains des tags copiés ne sont pas présents dans src_group, la fonction les supprime également de dest_group. La fonction reproduit la logique de copie des modificateurs Prometheus group left/group right.

Syntaxe

timeSeriesCopyTags(dest_group, src_group, tags_to_copy)

Arguments

  • dest_group — Le groupe de tags de destination. UInt64
  • src_group — Le groupe de tags source. UInt64
  • tags_to_copy — Les noms des tags à copier. Array(String)

Valeur renvoyée

Renvoie un groupe de tags contenant les tags de dest_group, ainsi que les tags copiés depuis src_group. UInt64

Exemples

Exemple

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

Introduit dans : v26.1.0

Extrait la valeur d’un tag spécifié dans le groupe. Renvoie NULL si le tag est introuvable. Voir aussi la fonction timeSeriesGroupToTags().

Syntaxe

timeSeriesExtractTag(group)

Arguments

  • group — Un groupe de tags. UInt64
  • tag_to_extract — Le nom d’un tag à extraire du groupe String

Valeur renvoyée

Renvoie la valeur du tag spécifié. Nullable(String)

Exemples

Exemple

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

Introduit dans : v25.8.0

Convertit un tableau de valeurs [x1, x2, x3, ...] en un tableau de tuples [(start_timestamp, x1), (start_timestamp + step, x2), (start_timestamp + 2 * step, x3), ...].

L’horodatage courant est incrémenté de step jusqu’à devenir supérieur à end_timestamp. Si le nombre de valeurs ne correspond pas au nombre d’horodatages, la fonction déclenche une exception.

Les valeurs NULL dans [x1, x2, x3, ...] sont ignorées, mais l’horodatage courant est quand même incrémenté. Par exemple, pour [value1, NULL, x2], la fonction renvoie [(start_timestamp, x1), (start_timestamp + 2 * step, x2)].

Syntaxe

timeSeriesFromGrid(start_timestamp, end_timestamp, step, values)

Arguments

Valeur renvoyée

Renvoie les valeurs du tableau source, combinées à des horodatages sur une grille temporelle régulière définie par start_timestamp et step. Array(Tuple(DateTime64, Float64))

Exemples

Exemple d’utilisation

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

Introduit dans : v26.4.0

Renvoie une clé d’échantillonnage UInt64 stable dérivée des tags d’un groupe donné.

La valeur est déterministe : des tags d’entrée identiques produisent toujours la même clé. Elle est conçue pour être utilisée comme clé de tri pour des opérateurs d’échantillonnage tels que limitk et limit_ratio.

Syntaxe

timeSeriesGroupToSamplingKey(group)

Arguments

  • group — Un groupe de tags. UInt64

Valeur renvoyée

Un hachage UInt64 stable dérivé des tags associés au groupe. UInt64

Exemples

Exemple

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

timeSeriesGroupToTags

Introduite dans : v26.1.0

Renvoie les noms et les valeurs des tags associés à un groupe spécifié. Voir aussi la fonction timeSeriesTagsToGroup().

Syntaxe

timeSeriesGroupToTags(group)

Alias : timeSeriesTagsGroupToTags

Arguments

  • group — Un groupe de tags. UInt64

Valeur renvoyée

Renvoie un tableau de paires (tag_name, tag_value). Le tableau renvoyé est toujours trié par tag_name et ne contient jamais le même tag_name plus d’une fois. Array(Tuple(String, String))

Exemples

Exemple

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

Introduit dans : v26.1.0

Renvoie les noms et les valeurs des tags associés à l’identifiant spécifié d’une série temporelle. Voir aussi la fonction timeSeriesStoreTags().

Syntaxe

timeSeriesIdToGroup(id)

Alias : timeSeriesIdToTagsGroup

Arguments

  • id — Identifiant d’une série temporelle. Doit être du même type que celui utilisé lors de l’appel à timeSeriesStoreTags(). Any

Valeur renvoyée

Renvoie un groupe de tags associé à l’identifiant id d’une série temporelle. UInt64

Exemples

Exemple

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

Introduit dans : v25.8.0

Renvoie les tags associés à l’identifiant spécifié d’une série temporelle. Voir aussi la fonction timeSeriesStoreTags().

Syntaxe

timeSeriesIdToTags(id)

Arguments

  • id — Identifiant d’une série temporelle. Doit être du même type que celui utilisé lors de l’appel à timeSeriesStoreTags(). Any

Valeur renvoyée

Renvoie un tableau de paires (tag_name, tag_value). Le tableau renvoyé est toujours trié par tag_name et ne contient jamais le même tag_name plus d’une fois. Array(Tuple(String, String))

Exemples

Exemple

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

Introduite dans : v26.1.0

Concatène les valeurs des tags spécifiés, extraites d'un groupe de tags. La fonction insère un séparateur entre les valeurs concaténées et renvoie un nouveau groupe de tags avec le tag dest_tag défini sur la valeur concaténée. Cette fonction reproduit la logique de la fonction Prometheus label_join().

Syntaxe

timeSeriesJoinTags(group, dest_tag, separator, src_tags)

Arguments

  • group — Un groupe de tags. UInt64
  • dest_tag — Le nom d’un tag contenant le résultat concaténé, qui sera ajouté au group. String
  • separator — Un séparateur à insérer entre les valeurs concaténées. String
  • src_tags — Les noms des tags sources contenant les valeurs à concaténer. Array(String)

Valeur renvoyée

Renvoie un nouveau groupe de tags dans lequel le tag dest_tag est défini sur le résultat concaténé. UInt64

Exemples

Exemple

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

Introduit dans : v26.8.0

Renvoie les suffixes des noms de métriques pour une famille de métriques du type Prometheus spécifié.

Syntaxe

timeSeriesMetricTypeToSuffixes(type)

Arguments

  • type — Type de métrique Prometheus (counter, gauge, histogram, summary, …). String

Valeur renvoyée

Renvoie les suffixes d'une famille de ce type. Array(String)

Exemples

Exemple

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

timeSeriesRange

Introduit dans : v25.8.0

Génère une séquence d'horodatages [start_timestamp, start_timestamp + step, start_timestamp + 2 * step, …, end_timestamp].

Si start_timestamp est égal à end_timestamp, la fonction renvoie un tableau d’un seul élément contenant [start_timestamp].

La fonction timeSeriesRange() est similaire à la fonction range.

Syntaxe

timeSeriesRange(start_timestamp, end_timestamp, step)

Arguments

Valeur renvoyée

Renvoie une plage d'horodatages. Array(DateTime64)

Exemples

Exemple d'utilisation

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

Introduit dans : v26.1.0

Supprime tous les tags d’un groupe de tags, à l’exception de ceux spécifiés. Voir aussi la fonction timeSeriesRemoveTag(), timeSeriesRemoveTags().

Syntaxe

timeSeriesRemoveAllTagsExcept(group, tags_to_keep)

Arguments

  • group — Un groupe de tags. UInt64
  • tags_to_keep — Les noms des tags à conserver dans le groupe. Array(String)

Valeur renvoyée

Un nouveau groupe de tags dans lequel seuls les tags spécifiés sont conservés. UInt64

Exemples

Exemple

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

Introduit dans : v26.1.0

Supprime un tag donné d’un groupe de tags. S’il n’existe pas de tag correspondant dans le groupe, celui-ci est renvoyé inchangé. Voir aussi la fonction timeSeriesRemoveTags(), timeSeriesRemoveAllTagsExcept().

Syntaxe

timeSeriesRemoveTag(group, tag_to_remove)

Arguments

  • group — Un groupe de tags. UInt64
  • tag_to_remove — Le nom d’un tag à retirer du groupe. String

Valeur renvoyée

Un nouveau groupe de tags sans le tag spécifié. UInt64

Exemples

Exemple

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

Introduit dans : v26.1.0

Supprime les tags spécifiés d’un groupe de tags. Si certains des tags spécifiés ne sont pas présents dans le groupe de tags, la fonction les ignore. Voir aussi la fonction timeSeriesRemoveTag(), timeSeriesRemoveAllTagsExcept().

Syntaxe

timeSeriesRemoveTags(group, tags_to_remove)

Arguments

  • group — Un groupe de tags. UInt64
  • tags_to_remove — Les noms des tags à supprimer du groupe. Array(String)

Valeur renvoyée

Un nouveau groupe de tags ne contenant pas les tags spécifiés. UInt64

Exemples

Exemple

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

Introduit dans : v26.1.0

Fait correspondre l'expression régulière regex à la valeur du tag src_tag. En cas de correspondance, la valeur du tag dest_tag dans le groupe renvoyé sera l'expansion de replacement, ainsi que les tags d'origine de l'entrée. Cette fonction reproduit la logique de la fonction Prometheus label_replace().

Syntaxe

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

Arguments

  • group — Un groupe de tags. UInt64
  • dest_tag — Le nom d’un tag de destination qui recevra le groupe résultant. String
  • replacement — Un motif de remplacement, pouvant contenir 1, 2 ou $name pour référencer les groupes de capture dans l’expression régulière 'regex'. String
  • src_tag — Le nom d’un tag dont la valeur est utilisée pour la correspondance avec l’expression régulière 'regex'. String
  • regex — Une expression régulière. String

Valeur renvoyée

Un nouveau groupe de tags, avec éventuellement dest_tag ajouté. UInt64

Exemples

Exemple

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

Introduit dans : v25.8.0

Stocke dans le contexte de la requête une association entre un identifiant donné de série temporelle et un ensemble de tags. Les fonctions timeSeriesIdToTags() et timeSeriesIdToGroup() peuvent être utilisées pour accéder à cette association par la suite lors de l'exécution de la requête.

Syntaxe

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

Arguments

Valeur renvoyée

Renvoie l’identifiant d’une série temporelle (c’est-à-dire simplement le premier argument).

Exemples

Exemple

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

Introduit dans : v26.1.0

Renvoie un groupe de tags associé aux tags spécifiés. Si le même groupe de tags est trouvé plusieurs fois lors de l'exécution de la requête, la fonction renvoie le même groupe. Pour un ensemble vide de tags, la fonction renvoie toujours 0. Voir aussi la fonction timeSeriesGroupToTags().

Syntaxe

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

Arguments

Valeur renvoyée

Renvoie un groupe de tags associé aux tags spécifiés. UInt64

Exemples

Exemple

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

Introduit dans : v26.8.0

Combine un tableau de paires (tag_name, tag_value) et des arguments distincts de nom et de valeur de tag dans une seule map. Le résultat est trié par nom de tag, et les noms de tag dupliqués ainsi que les tags dont la valeur est vide sont supprimés.

Syntaxe

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

Arguments

Valeur renvoyée

Renvoie une map associant les noms de tags à leurs valeurs, triée par nom de tag, sans noms de tags dupliqués ni valeurs de tags vides. Map(String, String)

Exemples

Exemple

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

timeSeriesThrowDuplicateSeriesIf

Introduit dans : v26.2.0

Vérifie la condition et, si elle est vraie, lève une exception avec le message suivant : Multiple series have the same tags <tags>, duplicate series in the same result set are not allowed. Si la condition est fausse, la fonction renvoie 0. Cette fonction est similaire à throwIf(), mais utilise un code d’erreur différent et présente le message d’erreur différemment.

Syntaxe

timeSeriesThrowDuplicateSeriesIf(condition, group)

Arguments

  • condition — Condition à vérifier ; contient généralement la fonction count() UInt8
  • group — Groupe de tags. UInt64

Valeur renvoyée

Renvoie 0. UInt8

Exemples

Une série par groupe

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

Deux séries avec les mêmes 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)
Navigation