Las instrucciones de agregación realizan análisis estadísticos, ordenamiento y limitación de filas en los resultados de consultas de registros.
stats
La instrucción stats realiza análisis estadísticos sobre los registros, de forma similar a las funciones de agregación de SQL como COUNT, SUM y AVG. Esta instrucción agrupa y agrega campos específicos en los datos de registros.
Esta instrucción se utiliza únicamente para consultas y análisis en un logstore. No aplica a escenarios como transformación de datos, consumo de reglas de Structured Process Language (SPL), Ingest Processors o configuraciones de Logtail.
De forma predeterminada, la instrucción stats devuelve los primeros 100 resultados de agregación. Para obtener más resultados, utilice la instrucción limit.
Sintaxis
stats <output>=<aggOperator> by <group>,[<group>...]
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
output |
String |
Sí |
Especifica un alias para el campo del resultado estadístico. |
|
aggOperator |
SQLExp |
Sí |
A continuación se listan las funciones de agregación compatibles:
|
|
group |
String |
No |
Especifica la dimensión para la agregación. Es equivalente al campo GROUP BY en SQL. |
Ejemplos
-
Ejemplo 1: Calcular el valor de
pvde los registros de acceso agrupado porip.-
Instrucción SPL
* | stats pv=count(*) by ip -
Datos de entrada
ip: 192.168.1.1 latencyMs: 10 ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 10 -
Datos de salida
ip: 192.168.1.2 pv: 1 ip: 192.168.1.1 pv: 2
-
-
Ejemplo 2: Calcular la latencia
min/maxpara todas las direccionesipen el registroaccesslog.-
Instrucción SPL
* | extend latencyMs=cast(latencyMs as bigint) | stats minLatencyMs=min(latencyMs), maxLatencyMs=max(latencyMs) by ip -
Datos de entrada
ip: 192.168.1.1 latencyMs: 10 ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 10 -
Datos de salida
ip: 192.168.1.2 minLatencyMs: 10 maxLatencyMs: 20 ip: 192.168.1.1 minLatencyMs: 10 maxLatencyMs: 10
-
-
Ejemplo 3: Calcular el total de
pven un registro de acceso.-
Instrucción SPL
* | stats pv=count(*) -
Datos de entrada
ip: 192.168.1.1 latencyMs: 10 ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 10 -
Datos de salida
pv: 3
-
sort
La instrucción sort ordena los resultados de la consulta según los valores de los campos o los resultados estadísticos en orden ascendente (asc) o descendente (desc).
Esta instrucción se utiliza únicamente para consultas y análisis en un logstore. No aplica a escenarios como transformación de datos, consumo de reglas SPL, Ingest Processors o configuraciones de Logtail.
Sintaxis
sort <field> [asc/desc] ,(<field> [asc/desc])
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
field |
String |
Sí |
Especifica el campo por el cual ordenar. Los siguientes tipos de campo son compatibles:
|
|
asc/desc |
String |
No |
|
Ejemplo
Ordene el registro accesslog por latencyMs.
-
Instrucción SPL
* | extend latencyMs=cast(latencyMs as bigint) | sort latencyMs desc -
Datos de entrada
ip: 192.168.1.1 latencyMs: 10 ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 15 -
Datos de salida
ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 15 ip: 192.168.1.1 latencyMs: 10
limit
La instrucción limit restringe la cantidad de filas de registros devueltas en los resultados de la consulta, lo que ayuda a prevenir problemas de rendimiento causados por conjuntos de resultados excesivamente grandes.
Esta instrucción se utiliza únicamente para consultas y análisis en un logstore. No aplica a escenarios como transformación de datos, consumo de reglas SPL, Ingest Processors o configuraciones de Logtail.
Si no utiliza la instrucción sort para especificar un criterio de ordenamiento, la salida de la instrucción limit se presenta en un orden aleatorio. Esto se debe a que el orden natural de los registros no está garantizado durante el almacenamiento.
Sintaxis
limit (<offset>,) <size>
Parámetros
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
offset |
Integer |
No |
Omite las primeras |
|
size |
Integer |
Sí |
El límite de filas. |
Ejemplo
Ordene un registro de acceso por el campo latencyMs y luego recupere la primera fila.
-
Instrucción SPL
* | extend latencyMs=cast(latencyMs as bigint) | sort latencyMs | limit 1 -
Datos de entrada
ip: 192.168.1.1 latencyMs: 10 ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 15 -
Datos de salida
ip: 192.168.1.1 latencyMs: 20