Compartilhar via


operador reduce

Aplica-se a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

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

Para cada um desses grupos, o operador retorna um pattern, count, e 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.

Sintaxe

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

Saiba mais sobre as convenções de sintaxe.

Parâmetros

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

Recomendamos definir um valor de limite pequeno para entradas grandes. Com um valor limite menor, mais valores 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 separam os termos. O padrão é todos os caracteres numéricos não ascii. Para obter exemplos, consulte o parâmetro Comportamento de caracteres.
Reduzir o tipo 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.

Devoluções

Uma tabela com tantas linhas quantos grupos e colunas intitulados pattern, count, e representative. O pattern melhor descreve 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 Count Representante
San * 5,182 São Bernardo
Santo * 2,846 Saint Lucy
Moscou 3726 Moscou
*-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 exemplos de.

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

Valor limite pequeno

Essa consulta gera um intervalo de números, cria uma nova coluna com cadeias de caracteres concatenadas e inteiros aleatórios e 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" 

Saída

Padrão Count Representante
Aprendizado de máquina* 1000 Aprendizado de máquinaX4

Valor limite grande

Essa consulta gera um intervalo de números, cria uma nova coluna com cadeias de caracteres concatenadas e inteiros aleatórios e 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" 

Saída

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

Padrão Count Representante
Aprendizado de máquina* 177 Aprendizado de máquinaX9
Aprendizado de máquina* 102 Aprendizado de máquinaX0
Aprendizado de máquina* 106 Aprendizado de máquinaX1
Aprendizado de máquina* 96 Aprendizado de máquinaX6
Aprendizado de máquina* 110 Aprendizado de máquinaX4
Aprendizado de máquina* 100 Aprendizado de máquinaX3
Aprendizado de máquina* 99 Aprendizado de máquinaX8
Aprendizado de máquina* 104 Aprendizado de máquinaX7
Aprendizado de máquina* 106 Aprendizado de máquinaX2

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 Count 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"

Saída

Padrão Count 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 Rastreamento. Em seguida, reduza a coluna Texto que inclui GUIDs aleatórios. À medida que GUIDs aleatórios interferem na operação de redução, substitua-os por "GUID" da cadeia de caracteres. Agora, execute a operação de redução. Caso haja outros identificadores "quase aleatórios" com caracteres '-' ou '_' inseridos neles, trate os caracteres como separadores de termo.

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

Observação

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