Una función de agregación calcula un único valor a partir de un conjunto de valores. Este tema describe la sintaxis básica de las funciones de agregación y proporciona ejemplos de uso.
Simple Log Service admite las siguientes funciones de agregación.
Si desea utilizar cadenas en instrucciones analíticas, debe encerrarlas entre comillas simples (''). Las cadenas que no están encerradas o que se encuentran entre comillas dobles ("") indican nombres de campo o de columna. Por ejemplo,
'status'
indica la cadena status, mientras que
status
o
"status"
indica el campo de registro status.
Parámetro | Sintaxis | Descripción | Compatibilidad con SQL | Compatibilidad con SPL |
arbitrary(x) | Devuelve un valor arbitrario no NULL de x. | √ | × | |
avg(x) | Calcula la media aritmética de x. | √ | × | |
bitwise_and_agg(x) | Devuelve el AND bit a bit de todos los valores en x. | √ | × | |
bitwise_or_agg(x) | Devuelve el OR bit a bit de todos los valores en x. | √ | × | |
bool_and(boolean expression) | Devuelve true si todos los registros cumplen la condición. La función | √ | × | |
bool_or(boolean expression) | Devuelve true si como mínimo un registro cumple la condición. | √ | × | |
checksum(x) | Calcula la suma de comprobación de x. | √ | × | |
count(*) | Devuelve el número total de registros. | √ | × | |
count(1) | Devuelve el número total de registros, lo cual equivale a | √ | × | |
count(x) | Devuelve el número de registros donde el valor de x no es NULL. | √ | × | |
count_if(boolean expression) | Devuelve el número de registros que cumplen la condición especificada. | √ | × | |
every(boolean expression) | Devuelve true si todos los registros cumplen la condición. La función | √ | × | |
geometric_mean(x) | Calcula la media geométrica de x. | √ | × | |
kurtosis(x) | Calcula la curtosis de x. | √ | × | |
map_union(x) | Devuelve la unión de mapas en una columna. Si una clave existe en varios mapas, se elige un valor arbitrario para dicha clave. | √ | × | |
max(x) | Devuelve el valor máximo en x. | √ | × | |
max(x, n) | Devuelve los n valores más grandes de x como un arreglo. | √ | × | |
max_by(x, y) | Devuelve el valor de x asociado con el valor máximo de y. | √ | × | |
max_by(x, y, n) | Devuelve un arreglo con los valores de x correspondientes a los n valores más grandes de y. | √ | × | |
min(x) | Devuelve el valor mínimo en x. | √ | × | |
min(x, n) | Devuelve los n valores más pequeños de x como un arreglo. | √ | × | |
min_by(x, y) | Devuelve el valor de x asociado con el valor mínimo de y. | √ | × | |
min_by(x, y, n) | Devuelve un arreglo con los valores de x correspondientes a los n valores más pequeños de y. | √ | × | |
skewness(x) | Calcula la asimetría de x. | √ | × | |
sum(x) | Calcula la suma de x. | √ | × |
Función arbitrary
La función arbitrary devuelve un valor arbitrario no nulo de la expresión x.
Sintaxis
arbitrary(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una expresión de cualquier tipo de dato. |
Tipo de retorno
Coincide con el tipo de dato de la expresión de entrada.
Ejemplo
Devuelve un valor arbitrario no nulo del campo request_method.
-
Instrucción de consulta (Debug)
* | SELECT arbitrary(request_method) AS request_method La columna request_method devuelve un valor como
GET.
Función avg
La función avg devuelve el promedio de los valores en x.
Sintaxis
avg(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
La columna o expresión de la cual calcular el promedio. Los valores deben ser de tipo double, bigint, decimal o real. |
Tipo de valor de retorno
Un valor de tipo double.
Ejemplos
Devuelve proyectos con una latencia promedio superior a 1,000 microsegundos.
-
Instrucción de consulta (Debug)
method: PostLogstoreLogs | SELECT avg(latency) AS avg_latency, Project GROUP BY Project HAVING avg_latency > 1000 La consulta devuelve un registro con una avg_latency de
3223.4162679425835y un nombre de Project que comienza condatalab-14.
Función bitwise_and_agg
La función bitwise_and_agg devuelve el AND bit a bit de todos los valores en x.
Sintaxis
bitwise_and_agg(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Un valor bigint. |
Tipo de valor de retorno
Un valor bigint.
Ejemplos
Realiza una operación AND bit a bit sobre todos los valores del campo status.
-
Instrucción de consulta (Debug)
* | SELECT bitwise_and_agg(status) La consulta devuelve una sola columna llamada
_col0con un valor de0.
Función bitwise_or_agg
La función bitwise_or_agg devuelve el resultado de la operación OR bit a bit sobre todos los valores en x.
Sintaxis
bitwise_or_agg(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Un valor bigint. |
Tipo de retorno
Un valor bigint.
Ejemplo
Realice una operación OR bit a bit sobre todos los valores del campo request_time.
-
Instrucción de consulta y análisis (Debug)
* | SELECT bitwise_or_agg(request_length) Los resultados de la consulta y el análisis se devuelven como una sola columna
_col0, y el valor es16383.
Función bool_and
La función bool_and devuelve true si una expresión booleana es true para todos los registros. Esta función es equivalente a la función every.
Sintaxis
bool_and(boolean expression)
Parámetros
|
Parámetro |
Descripción |
|
boolean expression |
La expresión booleana que se va a evaluar. |
Tipo de valor de retorno
boolean
Ejemplo
Este ejemplo comprueba si el valor de request_time para todos los registros es menor que 100.
-
Instrucción de consulta y análisis (Debug)
* | SELECT bool_and(request_time < 100) El resultado de la consulta y el análisis es
true, lo que indica que el valor derequest_timede todos los registros es menor que 100.
Función bool_or
La función bool_or devuelve true si una expresión booleana es true para como mínimo un registro.
Sintaxis
bool_or(boolean expression)
Parámetros
|
Parámetro |
Descripción |
|
boolean expression |
Una expresión booleana. |
Tipo de valor de retorno
boolean
Ejemplos
Para comprobar si el valor de request_time de algún registro es menor que 20:
-
Instrucción de consulta y análisis (Debug)
* | SELECT bool_or(request_time < 20) Los resultados de la consulta y el análisis devuelven
truepara la columna_col0, lo que indica que el registro contiene una entrada donde request_time es menor que 20.
Función checksum
La función checksum calcula la suma de comprobación de x.
Sintaxis
checksum(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una expresión de cualquier tipo de dato. |
Tipo de valor de retorno
Una cadena codificada en Base64.
Ejemplo
-
Instrucción de consulta (Debug)
* | SELECT checksum(request_method) AS request_method La suma de comprobación del campo request_method es
NDXFdgnd8GE=.
Función count
La función count cuenta registros.
Sintaxis
-
Cuenta el número total de registros.
count(*) -
Devuelve el número total de registros. Esto equivale a
count(*).count(1) -
Cuenta los registros donde x no es NULL.
count(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una expresión de cualquier tipo de dato. |
Tipo de valor de retorno
Un entero.
Ejemplos
-
Ejemplo 1: Contar las vistas de página del sitio web.
-
Instrucción de consulta (Debug)
* | SELECT count(*) AS PV Resultados de la consulta y el análisis: La tabla de resultados contiene una columna PV con el valor
2009.
-
-
Ejemplo 2: Contar los registros donde el campo
request_methodno es nulo.-
Instrucción de consulta (Debug)
* | SELECT count(request_method) AS count Resultados de la consulta y el análisis: La tabla de resultados contiene una columna count con el valor
1954.
-
Función count_if
La función count_if cuenta los registros que cumplen una condición especificada.
Sintaxis
count_if(boolean expression)
Parámetros
|
Parámetro |
Descripción |
|
boolean expression |
La condición que se va a evaluar. |
Tipo de retorno
El recuento de registros que cumplen la condición.
Ejemplo
Cuente el número de entradas de registro donde el valor del campo request_uri termina con file-0.
-
Instrucción de consulta y análisis (debug)
* | SELECT count_if(request_uri like '%file-0') AS count Resultados de la consulta y el análisis
Función geometric_mean
La función geometric_mean calcula la media geométrica de x.
Sintaxis
geometric_mean(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Un valor de tipo double, bigint o real. |
Tipo de valor de retorno
Devuelve un valor double.
Ejemplo
Calcule la media geométrica del tiempo de solicitud.
-
Instrucción de consulta y análisis (Debug)
* | SELECT geometric_mean(request_time) AS time Los resultados de la consulta y el análisis muestran una columna time con un valor de
39.443123208882308.
Función every
La función every devuelve true si una expresión booleana se evalúa como verdadera para todos los registros. Esta función es equivalente a la función bool_and.
Sintaxis
every(boolean expression)
Parámetros
|
Parámetro |
Descripción |
|
boolean expression |
Una expresión que devuelve un valor booleano para cada registro. |
Tipo de valor de retorno
Devuelve un valor booleano.
Ejemplo
Este ejemplo comprueba si el valor de request_time en cada registro es menor que 100.
-
Instrucción de consulta y análisis (Debug)
* | SELECT every(request_time < 100) Resultados de la consulta y el análisis
Función kurtosis
Calcula la curtosis de x.
Sintaxis
kurtosis(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
El valor debe ser de tipo double o bigint. |
Tipo de retorno
double
Ejemplo
Calcule la curtosis del campo request_time.
-
Instrucción de consulta (Debug)
*| SELECT kurtosis(request_time) -
Resultados de la consulta y el análisis
kurtosis -3.0006998250171186
Función map_union
La función map_union devuelve la unión de todos los mapas en una columna. Si la misma clave existe en varios mapas de entrada, el valor para esa clave en el mapa resultante se elige de forma no determinista a partir de una de las entradas.
Sintaxis
map_union(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una columna de tipo map. |
Tipo de valor de retorno
Devuelve un único valor de tipo map.
Ejemplo
Este ejemplo agrega los valores de mapa del campo etl_context en un solo mapa.
-
Campo de muestra
etl_context: { project:"datalab-148****6461-cn-chengdu" logstore:"internal-etl-log" consumer_group:"etl-83****4d1965" consumer:"etl-b2d40ed****c8d6-291294" shard_id:"0" } -
Instrucción de consulta
* | SELECT map_union( try_cast(json_parse(etl_context) AS map(varchar, varchar)) ) Resultados de la consulta y el análisis: Después de ejecutar la instrucción de consulta, la columna de resultados se denomina
_col0, y el valor es un mapa de pares clave-valor analizados sintácticamente desde etl_context, que contiene campos comoconsumer_group,shard_id,project,logstoreyconsumer, junto con sus valores correspondientes.
Función max
La función max devuelve el valor máximo de x.
Sintaxis
-
Devuelve el valor máximo de x.
max(x) -
Devuelve un arreglo con los n valores más grandes de x.
max(x, n)
Parámetros
|
Parámetro |
Descripción |
|
x |
Cualquier expresión. |
|
n |
Un entero positivo. |
Tipo de valor devuelto
El mismo tipo de datos que la expresión de entrada.
Ejemplos
-
Ejemplo 1: Obtener el tiempo de solicitud máximo.
-
Instrucción de consulta (Debug)
* | SELECT max(request_time) AS max_request_time Resultados de la consulta y el análisis: El valor de
max_request_timees80.0.
-
-
Ejemplo 2: Obtener los 10 tiempos de solicitud más altos.
-
Instrucción de consulta (Debug)
* | SELECT max(request_time, 10) AS "top 10" Resultados de la consulta y el análisis: La consulta devuelve
[80.0,80.0,80.0,80.0,80.0,79.0,79.0,79.0,78.0,78.0]en la columna top 10. El arreglo contiene los 10 valores más grandes derequest_timeen orden descendente.
-
Función max_by
La función max_by admite las dos sintaxis siguientes.
Sintaxis
-
Devuelve el valor de x correspondiente al valor máximo de y.
max_by(x, y) -
Devuelve un arreglo de valores de x correspondientes a los n valores más grandes de y.
max_by(x, y, n)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una expresión de cualquier tipo de datos. |
|
y |
Una expresión de cualquier tipo de datos. |
|
n |
Un entero positivo. |
Tipo de valor devuelto
El mismo tipo de datos que x.
Ejemplos
-
Ejemplo 1: Obtener la hora del pedido con el monto antes de impuestos más alto.
-
Instrucción de consulta y análisis
* | SELECT max_by(UsageEndTime, PretaxAmount) AS time Resultados de la consulta y el análisis: La columna time devuelve
1625731025.
-
-
Ejemplo 2: Obtener los métodos de solicitud de las tres solicitudes con los tiempos de solicitud más largos.
-
Instrucción de consulta y análisis (debug)
* | SELECT max_by(request_method, request_time, 3) AS method Resultados de la consulta y el análisis: El valor de method es
["POST","POST","POST"], lo cual indica que los métodos de las tres solicitudes más recientes, ordenadas porrequest_time, son todos POST.
-
Función min
La función min devuelve el valor mínimo en x.
Sintaxis
-
Devuelve el valor mínimo en x.
min(x) -
Devuelve los n valores más pequeños de x como un arreglo.
min(x,n)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una expresión de cualquier tipo de datos. |
|
n |
Un entero positivo. |
Tipo de valor devuelto
El mismo tipo de datos que la expresión de entrada.
Ejemplos
-
Ejemplo 1: Obtener el tiempo de solicitud mínimo.
-
Instrucción de consulta y análisis (Debug)
* | SELECT min(request_time) AS min_request_time Los resultados de la consulta y el análisis devuelven una columna llamada min_request_time con el valor
10.0.
-
-
Ejemplo 2: Obtener los 10 tiempos de solicitud más pequeños.
-
Instrucción de consulta y análisis (Debug)
* | SELECT min(request_time, 10) Los resultados de la consulta y el análisis devuelven una columna llamada
_col0con el valor[10.0,10.0,10.0,10.0,10.0,11.0,12.0,12.0,13.0,13.0].
-
Función min_by
La función min_by tiene las dos sintaxis siguientes.
Sintaxis
-
Devuelve el valor de x correspondiente al valor mínimo de y.
min_by(x, y) -
Devuelve un arreglo de valores de x correspondientes a los n valores más pequeños de y.
min_by(x, y, n)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una expresión de cualquier tipo de datos. |
|
y |
Una expresión de cualquier tipo de datos. |
|
n |
Un entero positivo. |
Tipo de valor devuelto
El mismo tipo de datos que el parámetro x.
Ejemplos
-
Ejemplo 1: Obtener el método de solicitud de la solicitud con el tiempo de solicitud mínimo.
-
Instrucción de consulta y análisis (Debug)
* | SELECT min_by(request_method, request_time) AS method Resultados de la consulta y el análisis: La columna method devuelve
GET.
-
-
Ejemplo 2: Obtener los métodos de solicitud de las tres solicitudes con los tiempos de solicitud más pequeños.
-
Instrucción de consulta y análisis (Debug)
* | SELECT min_by(request_method, request_time, 3) AS method Resultados de la consulta y el análisis.
-
Función skewness
La función skewness calcula la asimetría de la expresión x.
Sintaxis
skewness(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una expresión que se evalúa como tipo double o bigint. |
Tipo de valor devuelto
double
Ejemplo
Calcular la asimetría de los valores en el campo request_time.
-
Instrucción de consulta y análisis (Debug)
*| SELECT skewness(request_time) AS skewness Resultados de la consulta y el análisis: El valor de skewness es
0.00042944441602043965.
Función sum
La función sum suma los valores de la expresión x.
Sintaxis
sum(x)
Parámetros
|
Parámetro |
Descripción |
|
x |
Una expresión que se evalúa como tipo double, bigint, decimal o real. |
Tipo de valor devuelto
El mismo tipo de datos que la expresión de entrada.
Ejemplos
Calcular el tráfico diario de un sitio web.
-
Instrucción de consulta y análisis (debug)
* | SELECT date_trunc('day', __time__) AS time, sum(body_bytes_sent) AS body_bytes_sent GROUP BY time ORDER BY time Resultados de la consulta y el análisis: Tras ejecutar la instrucción de consulta y análisis, se devuelve una tabla de resultados estadísticos agregada por día, que contiene la suma de
body_bytes_sentpara un total de cinco días, del 2023-09-19 al 2023-09-23.