Compartilhar via


operador reduce

Agrupa um conjunto de cadeias de caracteres com base na similaridade de valor.

Para cada grupo desse tipo, o operador retorna um pattern, counte representative. O pattern melhor descreve o grupo, no qual o * caractere representa um curinga. O 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=Limite] [,characters=Caracteres]]

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Obrigató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 das linhas necessárias para corresponder aos critérios de agrupamento para disparar uma operação de redução. O valor padrão é 0,1.

É recomendável definir um valor de limite pequeno para entradas grandes. Com um valor limite menor, valores mais semelhantes são agrupados, resultando em menos grupos, mas mais semelhantes. Um valor de limite maior requer menos similaridade, resultando em mais grupos menos semelhantes. Veja os exemplos.
Caracteres string Uma lista de caracteres que se separam entre termos. O padrão é cada caractere numérico não ascii. Para obter exemplos, consulte o parâmetro Comportamento dos Caracteres.
ReduceKind string O único valor válido é source. Se source for especificado, o operador acrescentará a Pattern coluna às linhas existentes na tabela em vez de agregar por Pattern.

Retornos

Uma tabela com quantas linhas houver grupos e colunas intituladas pattern, counte representative. O pattern melhor descreve o grupo, no qual o * caractere representa um curinga ou um espaço reservado para uma cadeia de caracteres de inserção arbitrária. O 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 Contagem Representante
San * 5182 São Bernardo
Santo * 2846 Santa Lúcia
Moscou 3726 Moscou
*-Em-* 2730 Um -on- Um
Paris 2716 Paris

Exemplos

Valor de limite 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 Contagem Representante
MachineLearning* 1000 MachineLearningX4

Valor de limite 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 Contagem 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

Comportamento do parâmetro Characters

Se o parâmetro Characters não for especificado, cada caractere numérico não ascii se tornará 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 Contagem Representante
Outros 10

No entanto, se você especificar que "Z" é um separador, será 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 Contagem Representante
Foo* 10 fooZ1

Aplicar reduce à entrada higienizada

O exemplo a seguir mostra como se pode aplicar o reduce operador a uma entrada "higienizada", na qual os GUIDs na coluna que está sendo reduzida são substituídos antes da redução

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

Observação

A implementação do reduce operador é baseada em grande parte no papel Um Algoritmo de Clustering de Dados para Padrões de Mineração de Logs de Eventos, por Risto Vaarandi.