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
series— Un tableau de valeurs numériquesArray((U)Int8/16/32/64)ouArray(Float*)period— Un entier positifUInt8/16/32/64
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))ouArray(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
series— Un tableau de valeurs numériques.Array((U)Int8/16/32/64)ouArray(Float*)
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.UInt64src_group— Le groupe de tags source.UInt64tag_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.UInt64src_group— Le groupe de tags source.UInt64tags_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
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
start_timestamp— Début de la grille.DateTime64ouDateTimeouUInt32end_timestamp— Fin de la grille.DateTime64ouDateTimeouUInt32step— Pas de la grille en secondesDecimal64ouDecimal32ouUInt32/64values— Tableau de valeursArray(Float*)ouArray(Nullable(Float*))
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.UInt64dest_tag— Le nom d’un tag contenant le résultat concaténé, qui sera ajouté augroup.Stringseparator— Un séparateur à insérer entre les valeurs concaténées.Stringsrc_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
start_timestamp— Début de la plage.DateTime64ouDateTimeouUInt32end_timestamp— Fin de la plage.DateTime64ouDateTimeouUInt32step— Pas de la plage, en secondesUInt32/64ouDecimal32/64
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.UInt64tags_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
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.UInt64tags_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.UInt64dest_tag— Le nom d’un tag de destination qui recevra le groupe résultant.Stringreplacement— Un motif de remplacement, pouvant contenir1,2 ou $name pour référencer les groupes de capture dans l’expression régulière 'regex'.Stringsrc_tag— Le nom d’un tag dont la valeur est utilisée pour la correspondance avec l’expression régulière 'regex'.Stringregex— 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
id— Identifiant d’une série temporelle. Peut être de tout type comparable. Les lignes dont les identifiants sont NULL sont ignorées.Anytags_array— Tableau de paires (tag_name, tag_value).Array(Tuple(String, String))ouNULLseparate_tag_name_i— Le nom d’un tag.StringouFixedStringseparate_tag_value_i— La valeur d’un tag.StringouFixedStringouNullable(String)
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
tags_array— Tableau de paires (tag_name, tag_value).Array(Tuple(String, String))ouNULLtag_name_i— Le nom d’un tag.StringouFixedStringtag_value_i— La valeur d’un tag.StringouFixedStringouNullable(String)
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
tags_array— Tableau de paires (tag_name, tag_value).Array(Tuple(String, String))ouMap(String, String)ouNULLtag_name_i— Nom d’un tag.StringouFixedStringtag_value_i— Valeur d’un tag.StringouFixedStringouNullable(String)
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()UInt8group— 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);0Deux 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)