Compartir a través de


Operador reduce

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.

Syntax

T|reduce [kind=ReduceKind] byExpr [with [threshold=Threshold] [,characters=Characters]]

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Tipo Requerido 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 más valores 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 se separan entre términos. El valor predeterminado es cada carácter numérico no ascii. Para obtener ejemplos, vea 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 denominadas pattern, county representative. El pattern mejor describe el grupo, en el que el * carácter representa un carácter comodín o un 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 Representative
San * 5182 San Bernard
Saint * 2846 Santa Lucy
Moscow 3726 Moscow
*-En-* 2730 Uno en uno
Paris 2716 Paris

Ejemplos

Valor de umbral pequeño

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 Representative
MachineLearning* 1000 MachineLearningX4

Valor de umbral grande

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

Patrón Count Representative
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 no se especifica el parámetro Characters , 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 Representative
Otros 10

Sin embargo, si especifica que "Z" es un separador, es como si cada valor de str es 2 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 Representative
Foo* 10 fooZ1

Aplicar reduce a la entrada saneada

En el ejemplo siguiente se muestra cómo se puede aplicar el reduce operador a una entrada "saneada", en la que los GUID de la columna que se reducen se reemplazan antes de reducir.

// Start with a few records from the Trace table.
Trace | take 10000
// We will reduce the Text column which includes random GUIDs.
// As random GUIDs interfere with the reduce operation, replace them all
// by the string "GUID".
| extend Text=replace_regex(Text, @"[[:xdigit:]]{8}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{12}", @"GUID")
// Now perform the reduce. In case there are other "quasi-random" identifiers with embedded '-'
// or '_' characters in them, treat these as non-term-breakers.
| reduce by Text with characters="-_"

autocluster

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.