Operador reduce
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Agrupa un conjunto de cadenas en función de la similitud de valores.
Para cada grupo de este tipo, el operador devuelve un pattern
, count
y representative
. El pattern
mejor describe el grupo, en el que el *
carácter representa un carácter comodín.
count
es el número de valores del grupo y representative
es uno de los valores originales del grupo.
Sintaxis
T|
reduce
[kind
=
ReduceKind] by
Expr [with
[ Threshold=
Characters]]
Obtenga más información sobre las convenciones de sintaxis.
Parámetros
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
Expr | string |
✔️ | Valor por el que se va a reducir. |
Umbral | real |
Valor entre 0 y 1 que determina la fracción mínima de filas necesarias para que coincidan con los criterios de agrupación para desencadenar una operación de reducción. El valor predeterminado es 0.1. Se recomienda establecer un valor de umbral pequeño para entradas grandes. Con un valor de umbral más pequeño, se agrupan valores más similares, lo que da lugar a menos grupos, pero más similares. Un valor de umbral mayor requiere menos similitud, lo que da lugar a más grupos que son menos similares. Ver ejemplos. |
|
Caracteres | string |
Lista de caracteres que separan entre términos. El valor predeterminado es cada carácter numérico no ascii. Para obtener ejemplos, consulte El comportamiento del parámetro Characters. | |
ReduceKind | string |
El único valor válido es source . Si source se especifica, el operador anexa la Pattern columna a las filas existentes de la tabla en lugar de agregar mediante Pattern . |
Devoluciones
Una tabla con tantas filas como hay grupos y columnas tituladas pattern
, count
y representative
. El pattern
mejor describe el grupo, en el que el *
carácter representa un carácter comodín o marcador de posición para una cadena de inserción arbitraria.
count
es el número de valores del grupo y representative
es uno de los valores originales del grupo.
Por ejemplo, el resultado de reduce by city
podría incluir:
Patrón | Count | Representante |
---|---|---|
San * | 5,182 | San Bernard |
Saint * | 2,846 | Santa Lucía |
Moscow | 3726 | Moscow |
*-en-* | 2730 | Uno en uno |
Paris | 2716 | Paris |
Ejemplos
En el ejemplo de esta sección se muestra cómo usar la sintaxis para ayudarle a empezar.
En los ejemplos de este artículo se usan tablas disponibles públicamente en el clúster de , como la tabla
StormEvents
de la base de datos ejemplos de.
En los ejemplos de este artículo se usan tablas disponibles públicamente, como la tabla
StormEvents
del análisis meteorológico datos de ejemplo.
Valor de umbral pequeño
Esta consulta genera un intervalo de números, crea una nueva columna con cadenas concatenadas y enteros aleatorios y, a continuación, agrupa las filas por la nueva columna con parámetros de reducción específicos.
range x from 1 to 1000 step 1
| project MyText = strcat("MachineLearningX", tostring(toint(rand(10))))
| reduce by MyText with threshold=0.001 , characters = "X"
Salida
Patrón | Count | Representante |
---|---|---|
MachineLearning* | 1 000 | MachineLearningX4 |
Valor de umbral grande
Esta consulta genera un intervalo de números, crea una nueva columna con cadenas concatenadas y enteros aleatorios y, a continuación, agrupa las filas por la nueva columna con parámetros de reducción específicos.
range x from 1 to 1000 step 1
| project MyText = strcat("MachineLearningX", tostring(toint(rand(10))))
| reduce by MyText with threshold=0.9 , characters = "X"
Salida
El resultado incluye solo los grupos en los que el valor MyText aparece en al menos 90% de las filas.
Patrón | Count | Representante |
---|---|---|
MachineLearning* | 177 | MachineLearningX9 |
MachineLearning* | 102 | MachineLearningX0 |
MachineLearning* | 106 | MachineLearningX1 |
MachineLearning* | 96 | MachineLearningX6 |
MachineLearning* | 110 | MachineLearningX4 |
MachineLearning* | 100 | MachineLearningX3 |
MachineLearning* | 99 | MachineLearningX8 |
MachineLearning* | 104 | MachineLearningX7 |
MachineLearning* | 106 | MachineLearningX2 |
Comportamiento del parámetro Characters
Si el parámetro Characters no está especificado, cada carácter numérico no ascii se convierte en un separador de términos.
range x from 1 to 10 step 1 | project str = strcat("foo", "Z", tostring(x)) | reduce by str
Salida
Patrón | Count | Representante |
---|---|---|
Otros | 10 |
Sin embargo, si especifica que "Z" es un separador, es como si cada valor de str
sea dos términos: foo
y tostring(x)
:
range x from 1 to 10 step 1 | project str = strcat("foo", "Z", tostring(x)) | reduce by str with characters="Z"
Salida
Patrón | Count | Representante |
---|---|---|
Foo* | 10 | fooZ1 |
Aplicar reduce
a la entrada saneada
En el ejemplo siguiente se muestra cómo se puede aplicar el operador reduce
a una entrada "saneada", en la que los GUID de la columna que se reducen se reemplazan antes de reducir:
Comience con algunos registros de la tabla Trace. A continuación, reduzca la columna Texto que incluye GUID aleatorios. Dado que los GUID aleatorios interfieren con la operación de reducción, reemplácelos todos por la cadena "GUID". Ahora realice la operación de reducción. En caso de que haya otros identificadores "cuasialeatorios" con caracteres incrustados "-" o "_", trate los caracteres como separadores de términos.
Trace
| take 10000
| extend Text = replace(@"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", "GUID", Text)
| reduce by Text with characters="-_"
Contenido relacionado
Nota:
La implementación del reduce
operador se basa en gran medida en el documento A Data Clustering Algorithm for Mining Patterns From Event Logs, de Risto Vaarandi.