Les fonctions de comparaison de périodes comparent les résultats de requête sur différentes fenêtres temporelles, permettant ainsi des analyses d'une année sur l'autre et d'une période à l'autre.
Simple Log Service (SLS) prend en charge les fonctions de comparaison de périodes suivantes.
Si vous souhaitez utiliser des chaînes de caractères dans les instructions d'analyse, entourez-les de guillemets simples (''). Les chaînes non entourées de guillemets ou celles entourées de guillemets doubles ("") désignent des noms de champ ou de colonne. Par exemple, 'status' indique la chaîne de caractères « status », tandis que status ou "status" fait référence au champ de journal « status ».
|
Nom de la fonction |
Syntaxe |
Description |
Prise en charge SQL |
Prise en charge SPL |
|
compare(x, n) |
Compare le résultat calculé pour la période actuelle avec le résultat obtenu il y a n secondes. |
√ |
× |
|
|
compare(x, n1, n2, n3...) |
Compare le résultat calculé pour la période actuelle avec les résultats obtenus il y a n1, n2, n3... secondes. |
√ |
× |
|
|
ts_compare(x, n) |
Compare le résultat pour une heure alignée (par exemple, par heure) de la période actuelle avec le résultat obtenu à la même heure il y a n secondes. |
√ |
× |
|
|
ts_compare(x, n1, n2, n3...) |
Compare le résultat pour une heure alignée (par exemple, par heure) de la période actuelle avec les résultats obtenus aux mêmes heures il y a n1, n2, n3... secondes. |
√ |
× |
La fonction
ts_comparenécessite une clauseGROUP BYportant sur une seule colonne temporelle.Les fonctions
compareetts_comparene peuvent pas être imbriquées.
Fonction compare
Cette fonction compare le résultat calculé pour la période actuelle avec les résultats d'une ou plusieurs périodes précédentes.
Syntaxe
-
Compare le résultat calculé pour la période actuelle avec le résultat obtenu il y a n secondes.
compare(x, n) -
Compare le résultat calculé pour la période actuelle avec les résultats obtenus il y a n1, n2, n3... secondes.
compare(x, n1, n2, n3...)
Paramètres
|
Paramètre |
Description |
|
x |
Valeur à comparer. Elle doit être de type |
|
n |
Fenêtre temporelle exprimée en secondes. Exemples : |
Valeur de retour
Renvoie un tableau. Pour un seul décalage temporel n, le format est [current_result, previous_result, ratio]. Lorsque plusieurs décalages temporels (n1, n2, ...) sont spécifiés, le format devient [current_result, previous_result_1, previous_result_2, ..., ratio_1, ratio_2, ...].
Exemples
-
Exemple 1 : calculez le ratio des pages vues (PV) entre l'heure actuelle et la même heure la veille.
Définissez la plage de temps pour la requête et l'analyse sur 1 Hour (Aligned Time) et exécutez l'instruction de requête suivante. Dans cette instruction, 86400 représente l'heure actuelle moins 86 400 secondes (1 jour), et log correspond au nom du Logstore.
-
Affichage des résultats sous forme de tableau
-
Instruction de requête (Debug)
* | SELECT compare(PV, 86400) FROM ( SELECT count(*) AS PV FROM log ) -
Résultats de la requête et de l'analyse
3337.0 : nombre de pages vues pour l'heure actuelle (par exemple, de 14 h 00 à 15 h 00 le 25 décembre 2020).
3522.0 : nombre de pages vues pour la même heure la veille (par exemple, de 14 h 00 à 15 h 00 le 24 décembre 2020).
0.947473026689381 : ratio des pages vues entre l'heure actuelle et la même heure la veille.
-
-
Affichage des résultats dans des colonnes distinctes
-
Instruction de requête (Debug)
* | SELECT diff [1] AS today, diff [2] AS yesterday, diff [3] AS ratio FROM ( SELECT compare(PV, 86400) AS diff FROM ( SELECT count(*) AS PV FROM log ) )La fonction
comparerenvoie un tableau, où diff est un alias pour le résultat, et diff [1] permet d'obtenir la première valeur du tableau. -
Résultats de la requête et de l'analyse
3337.0 : nombre de pages vues pour l'heure actuelle (par exemple, de 14 h 00 à 15 h 00 le 25 décembre 2020).
3522.0 : nombre de pages vues pour la même heure la veille (par exemple, de 14 h 00 à 15 h 00 le 24 décembre 2020).
0.947473026689381 : ratio des pages vues entre l'heure actuelle et la même heure la veille.
-
-
-
Exemple 2 : pour l'heure actuelle, comptez les requêtes pour chaque combinaison de statut et de méthode de requête, puis comparez ce résultat avec le compte de l'heure précédente.
Sélectionnez 1 Hour (Aligned Time) comme plage de temps pour la requête et l'analyse, puis exécutez l'instruction de requête et d'analyse suivante. Dans cette instruction, 3600 représente l'heure actuelle moins 3 600 secondes (1 heure), et log correspond au nom du Logstore.
-
Instruction de requête (Debug)
* | SELECT status, request_method, compare(PV, 3600) FROM ( SELECT status, request_method, count(*) AS PV FROM log GROUP BY status, request_method ) GROUP BY status, request_method Résultats de la requête et de l'analyse : les résultats comprennent trois colonnes : status, request_method et _col2. La colonne _col2 contient le tableau renvoyé par la fonction
compareau format[current_period_value, previous_period_value, ratio]. Par exemple, une ligne correspondant à un code de statut 501 et à une méthode de requête GET renvoie[39.0, 13.0, 3.0]. Cela indique un nombre de pages vues de 39 pour la période actuelle, de 13 pour la période précédente et un ratio d'une période à l'autre de 3,0.
-
Fonction ts_compare
Cette fonction compare le résultat calculé pour une heure alignée (par exemple, par heure) de la période actuelle avec les résultats obtenus aux mêmes heures lors des périodes précédentes.
La fonction ts_compare nécessite une clause GROUP BY portant sur une seule colonne temporelle.
Syntaxe
-
Compare le résultat calculé pour une heure alignée de la période actuelle avec le résultat obtenu à la même heure alignée il y a n secondes.
ts_compare(x, n) -
Compare le résultat calculé pour une heure alignée de la période actuelle avec les résultats obtenus aux mêmes heures il y a n1, n2, n3... secondes.
ts_compare(x, n1, n2, n3...)
Paramètres
|
Paramètre |
Description |
|
x |
Valeur à comparer. Elle doit être de type |
|
n |
Fenêtre temporelle exprimée en secondes. Exemples : |
Valeur de retour
Renvoie un tableau. Pour un seul décalage temporel n, le format est [current_result, previous_result, ratio, previous_unix_timestamp]. Lorsque plusieurs décalages temporels (n1, n2, ...) sont spécifiés, le format devient [current_result, previous_result_1, previous_result_2, ..., ratio_1, ratio_2, ..., previous_unix_timestamp_1, previous_unix_timestamp_2, ...].
Exemples
-
Exemple 1 : comparez les pages vues (PV) horaires d'aujourd'hui avec celles de la même heure la veille et l'avant-veille.
Définissez la plage de temps pour la requête et l'analyse sur Today (Aligned Time) et exécutez l'instruction de requête suivante. Dans cette instruction, 86400 représente l'heure actuelle moins 86 400 secondes (1 jour), 172800 représente l'heure actuelle moins 172 800 secondes (2 jours), log correspond au nom du Logstore, et date_trunc('hour',__time__ ) utilise la fonction date_trunc pour aligner l'heure à l'heure pleine.
-
Affichage des résultats sous forme de tableau
-
Instruction de requête (Debug)
* | SELECT time, ts_compare(PV, 86400, 172800) as diff FROM ( SELECT count(*) as PV, date_trunc('hour', __time__) AS time FROM log GROUP BY time ) GROUP BY time ORDER BY time -
Résultats de la requête et de l'analyse
1174.0 : nombre de pages vues pour la période actuelle (par exemple, de 00 h 00 à 01 h 00 le 22 septembre 2022).
1191.0 : nombre de pages vues pour la même période la veille (par exemple, de 00 h 00 à 01 h 00 le 21 septembre 2022).
1253.0 : nombre de pages vues pour la même période l'avant-veille (par exemple, de 00 h 00 à 01 h 00 le 20 septembre 2022).
0.9857262804366079 : ratio des pages vues entre l'heure actuelle et la même heure la veille.
0.936951316839585 : ratio des pages vues entre l'heure actuelle et la même heure l'avant-veille.
1663689600.0 : horodatage UNIX pour 00 h 00 le 21 septembre 2022.
1663603200.0 : horodatage UNIX pour 00 h 00 le 20 septembre 2022.
RemarqueLes horodatages présents dans les résultats peuvent varier selon le moment où vous exécutez la requête.
-
-
Affichage des résultats dans des colonnes distinctes
-
Instruction de requête (Debug)
* | SELECT time, diff [1] AS day1, diff [2] AS day2, diff [3] AS day3, diff [4] AS ratio1, diff [5] AS ratio2 FROM ( SELECT time, ts_compare(PV, 86400, 172800) AS diff FROM ( SELECT count(*) as PV, date_trunc('hour', __time__) AS time FROM log GROUP BY time ) GROUP BY time ORDER BY time ) Résultats de la requête et de l'analyse : chaque ligne du tableau de résultats représente une heure de données. time correspond à l'horodatage horaire. day1, day2 et day3 indiquent respectivement le nombre de pages vues pour la journée en cours, la veille et l'avant-veille. ratio1 représente le ratio entre la journée en cours et la veille, tandis que ratio2 correspond au ratio entre la journée en cours et l'avant-veille. Une valeur proche de 1,0 signifie qu'il y a peu de variation.
-
-
-
Exemple 2 : calculez la variation horaire des pages vues (PV) pour aujourd'hui.
Définissez la plage de temps pour la requête et l'analyse sur Today (relative) et exécutez l'instruction de requête suivante. Dans cette instruction, 3600 représente l'heure actuelle moins 3 600 secondes (1 heure), log correspond au nom du Logstore, et date_trunc('hour',__time__ ) utilise la fonction
date_truncpour aligner l'heure à l'heure pleine.-
Instruction de requête (Debug)
* | SELECT time, ts_compare(PV, 3600) AS data FROM( SELECT date_trunc('hour', __time__) AS time, count(*) AS PV FROM log GROUP BY time ORDER BY time ) GROUP BY time -
Les résultats de la requête et de l'analyse contiennent deux colonnes : time et data. Par exemple, lorsque time vaut
2021-01-27 00:00:00.000, data est égal à[1160.0,10034.0,0.11560693641618497,1611673200.0]. Lorsque time vaut2021-01-27 01:00:00.000, data est égal à[10177.0,1160.0,8.773275862068966,1611676800.0]. Lorsque time vaut2021-01-27 02:00:00.000, data est égal à[26804.0,10177.0,2.633782057580195,1611680400.0].RemarqueLes horodatages présents dans les résultats peuvent varier selon le moment où vous exécutez la requête.
-