Compartir a través de


reduce operator

Applies to: ✅Microsoft FabricAzure Data ExplorerAzure 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.

Syntax

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

Learn more about syntax conventions.

Parameters

Name Type Required Description
Expr string ✔️ Valor por el que se va a reducir.
Threshold 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.

El parámetro threshold determina el nivel mínimo de similitud necesario para agrupar los valores. Con un valor de umbral más pequeño (más cerca de 0), se agrupan más valores similares, lo que da lugar a menos grupos pero más similares. Un valor de umbral mayor (más cerca de 1) requiere menos similitud, lo que da lugar a más grupos que son menos similares. Se recomienda establecer un valor de umbral pequeño para entradas grandes. See Examples.
Characters string Lista de caracteres que separan entre términos. El valor predeterminado es cada carácter numérico no ascii. For examples, see Examples.
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.

Returns

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:

Pattern Count Representative
San * 5182 San Bernard
Saint * 2846 Saint Lucy
Moscow 3726 Moscow
*-en-* 2730 Uno en uno
Paris 2716 Paris

Examples

En el ejemplo de esta sección se muestra cómo usar la sintaxis para ayudarle a empezar.

The examples in this article use publicly available tables in the help cluster, such as the StormEvents table in the Samples database.

The examples in this article use publicly available tables, such as the Weather table in the Weather analytics sample gallery. Es posible que tenga que modificar el nombre de la tabla en la consulta de ejemplo para que coincida con la tabla del área de trabajo.

En el ejemplo siguiente se genera un intervalo de números, se crea una nueva columna con cadenas concatenadas y enteros aleatorios y, a continuación, se agrupan las filas por la nueva columna con parámetros de reducción específicos. El umbral se establece en 0,001, lo que significa que los valores de los operadores que son muy similares entre sí.

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" 

Output

Pattern Count Representative
MachineLearning* 1000 MachineLearningX4

En el ejemplo siguiente se genera un intervalo de números, se crea una nueva columna con cadenas concatenadas y enteros aleatorios y, a continuación, se agrupan las filas por la nueva columna con parámetros de reducción específicos. El umbral se establece en 0,9, lo que significa que el operador agrupa los valores menos estrictamente y permite más varianza.

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" 

Output

El resultado incluye solo los grupos en los que el valor MyText aparece en al menos 90% de las filas.

Pattern 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

If the Characters parameter is unspecified, by default the operator treats all non-alphanumeric characters (including spaces and punctuation) as term separators. The following example shows how the reduce operator behaves when the Characters parameter isn't specified.

range x from 1 to 10 step 1 | project str = strcat("foo", "Z", tostring(x)) | reduce by str

Output

Pattern Count Representative
others 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"

Output

Pattern Count Representative
foo* 10 fooZ1

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="-_"

Note

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.