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] [,
=
threshold
characters
=
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
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 | Representante |
---|---|---|
MachineLearning* | 1 000 | 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 | 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
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 | Representante |
---|---|---|
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="-_"
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.