operador reduce

Agrupa um conjunto de cadeias com base na semelhança de valor.

Para cada grupo deste tipo, o operador devolve um pattern, counte representative. O pattern melhor descreve o grupo, no qual o * caráter representa um caráter universal. É count o número de valores no grupo e o representative é um dos valores originais no grupo.

Syntax

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

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Necessário Descrição
Expr string ✔️ O valor pelo qual reduzir.
Limite real Um valor entre 0 e 1 que determina a fração mínima de linhas necessária para corresponder aos critérios de agrupamento para acionar uma operação de redução. O valor predefinido é 0,1.

Recomendamos que defina um pequeno valor de limiar para entradas grandes. Com um valor de limiar mais pequeno, os valores mais semelhantes são agrupados em conjunto, o que resulta em menos grupos, mas mais semelhantes. Um valor de limiar maior requer menos semelhança, o que resulta em mais grupos menos semelhantes. Veja Exemplos.
Carateres string Uma lista de carateres que se separam entre termos. A predefinição é cada caráter numérico não ascii. Por exemplo, veja Parâmetro Comportamento dos Carateres.
ReduceKind string O único valor válido é source. Se source for especificado, o operador acrescenta a Pattern coluna às linhas existentes na tabela em vez de agregar por Pattern.

Devoluções

Uma tabela com tantas linhas como existem grupos e colunas intitulados pattern, counte representative. O pattern melhor descreve o grupo, no qual o * caráter representa um caráter universal ou um marcador de posição para uma cadeia de inserção arbitrária. É count o número de valores no grupo e o representative é um dos valores originais no grupo.

Por exemplo, o resultado de reduce by city pode incluir:

Padrão de palavras Representante
San * 5182 São Bernardo
Santo * 2846 Santa Lúcia
Moscovo 3726 Moscovo
* -on- * 2730 Um - em- Um
Paris 2716 Paris

Exemplos

Valor de limiar pequeno

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" 

Saída

Padrão de palavras Representante
MachineLearning* 1000 MachineLearningX4

Valor de limiar 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" 

Saída

Padrão de palavras 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

Parâmetro Comportamento dos Carateres

Se o parâmetro Carateres não for especificado, cada caráter numérico não ascii torna-se um separador de termos.

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

Saída

Padrão de palavras Representante
outros 10

No entanto, se especificar que "Z" é um separador, é como se cada valor em str fosse 2 termos: foo e tostring(x):

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

Saída

Padrão de palavras Representante
foo* 10 fooZ1

Aplicar reduce a entradas limpas

O exemplo seguinte mostra como se pode aplicar o reduce operador a uma entrada "limpa", na qual os GUIDs na coluna que está a ser reduzida são substituídos antes de reduzir

// 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

A implementação do reduce operador baseia-se, em grande parte, no documento A Data Clustering Algorithm for Mining Patterns From Event Logs (Algoritmo de Clustering de Dados para Padrões de Extração dos Registos de Eventos), de Risto Vaarandi.