Las funciones de periodo comparativo comparan los resultados de consultas en distintos intervalos de tiempo, lo que permite realizar análisis interanuales y comparativos entre periodos.
Simple Log Service (SLS) admite las siguientes funciones de periodo comparativo.
Si desea utilizar cadenas en instrucciones analíticas, debe encerrarlas entre comillas simples (''). Las cadenas sin comillas o encerradas entre comillas dobles ("") indican nombres de campos o columnas. Por ejemplo, 'status' indica la cadena status, mientras que status o "status" indica el campo de registro status.
|
Nombre de la función |
Sintaxis |
Descripción |
Compatibilidad con SQL |
Compatibilidad con SPL |
|
compare(x, n) |
Compara el resultado calculado del periodo actual con el resultado de n segundos anteriores. |
√ |
× |
|
|
compare(x, n1, n2, n3...) |
Compara el resultado calculado del periodo actual con los resultados de n1, n2, n3... segundos anteriores. |
√ |
× |
|
|
ts_compare(x, n) |
Compara el resultado de un momento alineado, como por hora, en el periodo actual con el resultado del momento correspondiente n segundos antes. |
√ |
× |
|
|
ts_compare(x, n1, n2, n3...) |
Compara el resultado de un momento alineado, como por hora, en el periodo actual con los resultados de los momentos correspondientes n1, n2, n3... segundos antes. |
√ |
× |
La función
ts_comparerequiere una cláusulaGROUP BYcon una sola columna de tiempo.Las funciones
compareyts_compareno pueden anidarse.
Función compare
Compara el resultado calculado del periodo actual con los resultados de uno o varios periodos anteriores.
Sintaxis
-
Compara el resultado calculado del periodo actual con el resultado de n segundos anteriores.
compare(x, n) -
Compara el resultado calculado del periodo actual con los resultados de n1, n2, n3... segundos anteriores.
compare(x, n1, n2, n3...)
Parámetros
|
Parámetro |
Descripción |
|
x |
El valor a comparar. Debe ser de tipo |
|
n |
La ventana de tiempo en segundos. Ejemplos: |
Valor devuelto
Devuelve un arreglo. Para un solo desplazamiento de tiempo n, el formato es [current_result, previous_result, ratio]. Cuando se especifican varios desplazamientos de tiempo (n1, n2, ...), el formato es [current_result, previous_result_1, previous_result_2, ..., ratio_1, ratio_2, ...].
Ejemplos
-
Ejemplo 1: Calcular la proporción de páginas vistas (PV) entre la hora actual y la misma hora del día anterior.
Establezca el intervalo de tiempo para la consulta y el análisis en 1 Hour (Aligned Time) y ejecute la siguiente instrucción de consulta. En esta instrucción, 86400 representa la hora actual menos 86400 segundos (1 día), y log representa el nombre del logstore.
-
Mostrar resultados como un arreglo
-
Instrucción de consulta (Debug)
* | SELECT compare(PV, 86400) FROM ( SELECT count(*) AS PV FROM log ) -
Resultados de la consulta y el análisis
3337.0: Las PV de la hora actual (por ejemplo, de 14:00:00 a 15:00:00 el 25 de diciembre de 2020).
3522.0: Las PV de la misma hora del día anterior (por ejemplo, de 14:00:00 a 15:00:00 el 24 de diciembre de 2020).
0.947473026689381: La proporción de PV entre la hora actual y la misma hora del día anterior.
-
-
Mostrar resultados en columnas separadas
-
Instrucción de consulta (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 función
comparedevuelve un arreglo, donde diff es un alias del resultado, y diff [1] obtiene el primer valor del arreglo. -
Resultados de la consulta y el análisis
3337.0: Las PV de la hora actual (por ejemplo, de 14:00:00 a 15:00:00 el 25 de diciembre de 2020).
3522.0: Las PV de la misma hora del día anterior (por ejemplo, de 14:00:00 a 15:00:00 el 24 de diciembre de 2020).
0.947473026689381: La proporción de PV entre la hora actual y la misma hora del día anterior.
-
-
-
Ejemplo 2: Para la hora actual, contar las solicitudes para cada combinación de estado y método de solicitud, y comparar el resultado con el conteo de la hora anterior.
Seleccione 1 Hour (Aligned Time) como intervalo de tiempo para la consulta y el análisis, y ejecute la siguiente instrucción. En esta instrucción, 3600 representa la hora actual menos 3600 segundos (1 hora), y log representa el nombre del logstore.
-
Instrucción de consulta (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 Resultados de la consulta y el análisis: Los resultados incluyen tres columnas: status, request_method y _col2. La columna _col2 contiene el arreglo devuelto por la función
comparecon el formato[current_period_value, previous_period_value, ratio]. Por ejemplo, una fila con código de estado 501 y método de solicitud GET devuelve[39.0, 13.0, 3.0]. Esto indica un conteo de PV de 39 para el periodo actual, 13 para el periodo anterior y una proporción entre periodos de 3.0.
-
Función ts_compare
Compara el resultado calculado de un momento alineado (por ejemplo, por hora) en el periodo actual con los resultados de los momentos correspondientes en periodos anteriores.
La función ts_compare requiere una cláusula GROUP BY con una sola columna de tiempo.
Sintaxis
-
Compara el resultado calculado de un momento alineado en el periodo actual con el resultado del momento alineado correspondiente en un periodo n segundos anterior.
ts_compare(x, n) -
Compara el resultado calculado de un momento alineado en el periodo actual con los resultados de los momentos correspondientes n1, n2, n3... segundos anteriores.
ts_compare(x, n1, n2, n3...)
Parámetros
|
Parámetro |
Descripción |
|
x |
El valor a comparar. Debe ser de tipo |
|
n |
La ventana de tiempo en segundos. Ejemplos: |
Valor devuelto
Devuelve un arreglo. Para un solo desplazamiento de tiempo n, el formato es [current_result, previous_result, ratio, previous_unix_timestamp]. Cuando se especifican varios desplazamientos de tiempo (n1, n2, ...), el formato es [current_result, previous_result_1, previous_result_2, ..., ratio_1, ratio_2, ..., previous_unix_timestamp_1, previous_unix_timestamp_2, ...].
Ejemplos
-
Ejemplo 1: Comparar las páginas vistas (PV) por hora de hoy con las de la misma hora del día anterior y de hace dos días.
Establezca el intervalo de tiempo para la consulta y el análisis en Today (Aligned Time) y ejecute la siguiente instrucción de consulta. En esta instrucción, 86400 representa la hora actual menos 86400 segundos (1 día), 172800 representa la hora actual menos 172800 segundos (2 días), log representa el nombre del logstore, y date_trunc('hour',__time__ ) representa el uso de la función date_trunc para alinear el tiempo a la hora.
-
Mostrar resultados como un arreglo
-
Instrucción de consulta (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 -
Resultados de la consulta y el análisis
1174.0: Las PV del periodo actual (por ejemplo, de 00:00 a 01:00 el 22 de septiembre de 2022).
1191.0: Las PV del mismo periodo del día anterior (por ejemplo, de 00:00 a 01:00 el 21 de septiembre de 2022).
1253.0: Las PV del mismo periodo de hace dos días (por ejemplo, de 00:00 a 01:00 el 20 de septiembre de 2022).
0.9857262804366079: La proporción de PV entre la hora actual y la misma hora del día anterior.
0.936951316839585: La proporción de PV entre la hora actual y la misma hora de hace dos días.
1663689600.0: La marca de tiempo UNIX para las 00:00 del 21 de septiembre de 2022.
1663603200.0: La marca de tiempo UNIX para las 00:00 del 20 de septiembre de 2022.
NotaLas marcas de tiempo en los resultados pueden variar según el momento en que ejecute la consulta.
-
-
Mostrar resultados en columnas separadas
-
Instrucción de consulta (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 ) Resultados de la consulta y el análisis: Cada fila en la tabla de resultados representa una hora de datos. time es la marca de tiempo horaria. day1, day2 y day3 son los conteos de PV para el día actual, el día anterior y hace dos días, respectivamente. ratio1 es la proporción entre el día actual y el día anterior, y ratio2 es la proporción entre el día actual y hace dos días. Un valor cercano a 1.0 indica pocos cambios.
-
-
-
Ejemplo 2: Calcular el cambio hora tras hora en las páginas vistas (PV) de hoy.
Establezca el intervalo de tiempo para la consulta y el análisis en Today (relative) y ejecute la siguiente instrucción de consulta. En esta instrucción, 3600 representa la hora actual menos 3600 segundos (1 hora), log es el nombre del logstore, y date_trunc('hour',__time__ ) utiliza la función
date_truncpara alinear el tiempo a la hora.-
Instrucción de consulta (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 -
Los resultados de la consulta y el análisis contienen dos columnas: time y data. Por ejemplo, cuando time es
2021-01-27 00:00:00.000, data es[1160.0,10034.0,0.11560693641618497,1611673200.0]. Cuando time es2021-01-27 01:00:00.000, data es[10177.0,1160.0,8.773275862068966,1611676800.0]. Cuando time es2021-01-27 02:00:00.000, data es[26804.0,10177.0,2.633782057580195,1611680400.0].NotaLas marcas de tiempo en los resultados pueden variar según el momento en que ejecute la consulta.
-