Passer au contenu principal
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
Query
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
Response
┌───────────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
Query
SELECT seriesOutliersDetectTukey([-3, 2, 15, 3, 5, 6, 4, 5, 12, 45, 12, 3, 3, 4, 5, 6]) AS print_0
Response
┌───────────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
Query
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
Response
┌─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
Query
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
Response
┌───────────print_0──────┐
│                      3 │
└────────────────────────┘
Détection de période avec un motif complexe
Query
SELECT seriesPeriodDetectFFT(arrayMap(x -> abs((x % 6) - 3), range(1000))) AS print_0
Response
┌─print_0─┐
│       6 │
└─────────┘

timeSeriesCopyTag

Introduit dans : v26.1.0 Copie un tag donné 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 source de tags. 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
Query
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)
Response
┌─dest_group─┬─src_group─┬─result_group─┬─timeSeriesGroupToTags(result_group)────────────────────────┐
│          1 │         2 │            3 │ [('__name__','http_codes'),('code','404'),('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
Query
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)
Response
┌─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
Query
SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
       timeSeriesExtractTag(group, '__name__'),
       timeSeriesExtractTag(group, 'env'),
       timeSeriesExtractTag(group, 'instance')
Response
┌─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
Query
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;
Response
┌─────────────────────────────────────────────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
Query
SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
       timeSeriesGroupToSamplingKey(group) AS sampling_key
Response
┌─group─┬─────────sampling_key─┐
│     1 │ 12876543210987654321 │
└───────┴──────────────────────┘

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
Query
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)
Response
┌─group─┬─sorted_tags────────────────────────────────────────────────────────┬─same_group─┬─throwIf(notE⋯up, 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 Valeur renvoyée Renvoie un groupe de tags associé à l’identifiant id d’une série temporelle. UInt64 Exemples Exemple
Query
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)
Response
┌────────────id─┬───────same_id─┬─throwIf(notE⋯me_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 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
Query
SELECT 8374283493092 AS id,
       timeSeriesStoreTags(id, [('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS same_id,
       throwIf(same_id != id),
       timeSeriesIdToTags(same_id)
Response
┌────────────id─┬───────same_id─┬─throwIf(notE⋯me_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
Query
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)
Response
┌─group─┬─result_group─┬─timeSeriesGroupToTags(result_group)─────────────────────────────────────────────────────────────┐
│     1 │            2 │ [('__name__','up'),('foo','a,b,c'),('job','api-server'),('src1','a'),('src2','b'),('src3','c')] │
└───────┴──────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────┘

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
Query
SELECT timeSeriesRange('2025-06-01 00:00:00'::DateTime64(3), '2025-06-01 00:01:00'::DateTime64(3), 30)
Response
┌────────────────────────────────────result─────────────────────────────────────────┐
│ ['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
Query
SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
       timeSeriesRemoveAllTagsExcept(group, ['env']) AS result_group,
       timeSeriesGroupToTags(result_group)
Response
┌─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
Query
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)
Response
┌─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
Query
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)
Response
┌─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,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
Query
SELECT timeSeriesTagsToGroup([('__name__', 'up'), ('job', 'api-server'), ('service', 'a:c')]) AS group,
       timeSeriesReplaceTag(group, 'foo', '$1', 'service', '(.*):.*') AS result_group,
       timeSeriesGroupToTags(result_group)
Response
┌─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
Query
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))
Response
┌────────────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 Renvoyer 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
Query
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)
Response
┌─group1─┬─group2─┬─empty_group─┬─same_group2─┬─throwIf(notEquals(same_group2, group2))─┬─timeSeriesGroupToTags(group2)──┐
│      1 │      2 │           0 │           2 │                                       0 │ [('__name__','http_failures')] │
└────────┴────────┴─────────────┴─────────────┴─────────────────────────────────────────┴────────────────────────────────┘

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 Exemple
Query
CREATE TABLE test(tags Array(Tuple(String, String))) engine=Memory;

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

SELECT timeSeriesTagsToGroup(tags) AS group
FROM test
GROUP BY group
HAVING timeSeriesThrowDuplicateSeriesIf(count() > 1, group) = 0;  -- OK

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

SELECT timeSeriesTagsToGroup(tags) AS group
FROM test
GROUP BY group
HAVING timeSeriesThrowDuplicateSeriesIf(count() > 1, group) = 0;  -- Throws exception "Multiple series have the same tags {'__name__': 'up'}"
Response
Dernière modification le 29 juin 2026