Compartir a través de


Operador reduce

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft 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, county 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] byExpr [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, county 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="-_"

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.