Partilhar via


reduzir operador

Aplica-se a: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

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

Para cada um desses grupos, o operador retorna um pattern, counte representative. O pattern descreve melhor 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.

Sintaxe

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

Saiba mais sobre convenções de sintaxe.

Parâmetros

Designação Tipo Necessário Descrição
Expr string ✔️ O valor pelo qual reduzir.
Limiar 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 a fim de desencadear uma operação de redução. O valor padrão é 0.1.

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

Devoluções

Uma tabela com tantas linhas quantos grupos e colunas intitulados pattern, counte representative. O pattern descreve melhor o grupo, no qual o caractere * representa um curinga ou 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
São * 5182 São Bernardo
Santo * 2846 Santa Luzia
Moscovo 3726 Moscovo
* -em- * 2730 Um contra um
Paris 2716 Paris

Exemplos

O exemplo nesta seção mostra como usar a sintaxe para ajudá-lo a começar.

Os exemplos neste artigo usam tabelas disponíveis publicamente no de cluster de ajuda, como a tabela StormEvents no banco de dados Samples.

Os exemplos neste artigo usam tabelas disponíveis publicamente, como a tabela StormEvents na análise do tempo dados de exemplo.

Valor limite pequeno

Esta consulta gera um intervalo de números, cria uma nova coluna com cadeias de caracteres concatenadas e inteiros aleatórios e, em seguida, agrupa as linhas pela nova coluna com parâmetros de redução específicos.

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

Padrão Contagem Representante
Aprendizagem Automática* 1000 Aprendizagem AutomáticaX4

Valor limite grande

Esta consulta gera um intervalo de números, cria uma nova coluna com cadeias de caracteres concatenadas e inteiros aleatórios e, em seguida, agrupa as linhas pela nova coluna com parâmetros de redução específicos.

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

O resultado inclui apenas os grupos em que o valor MyText aparece em pelo menos 90% das linhas.

Padrão Contagem Representante
Aprendizagem Automática* 177 Aprendizagem AutomáticaX9
Aprendizagem Automática* 102 Aprendizagem AutomáticaX0
Aprendizagem Automática* 106 Aprendizagem AutomáticaX1
Aprendizagem Automática* 96 Aprendizagem AutomáticaX6
Aprendizagem Automática* 110 Aprendizagem AutomáticaX4
Aprendizagem Automática* 100 Aprendizagem AutomáticaX3
Aprendizagem Automática* 99 Aprendizagem AutomáticaX8
Aprendizagem Automática* 104 Aprendizagem AutomáticaX7
Aprendizagem Automática* 106 Aprendizagem AutomáticaX2

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

Output

Padrão Contagem Representante
Outros 10

No entanto, se você especificar que "Z" é um separador, é como se cada valor em str fosse dois 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"

Output

Padrão Contagem Representante
Foo* 10 fooZ1

Aplicar reduce à entrada higienizada

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

Comece com alguns registros da tabela Rastrear. Em seguida, reduza a coluna Texto, que inclui GUIDs aleatórios. Como GUIDs aleatórios interferem na operação de redução, substitua-os todos pela string "GUID". Agora execute a operação de redução. No caso de existirem outros identificadores "quase aleatórios" com caracteres '-' ou '_' incorporados, trate os caracteres como não separadores de termos.

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="-_"
  • de cluster automático

Observação

A implementação de reduce operador é amplamente baseada no artigo A Data Clustering Algorithm for Mining Patterns From Event Logs, de Risto Vaarandi.