Compartilhar via


reduce operator

Applies to: ✅Microsoft FabricAzure Data ExplorerAzure 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.

Syntax

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

Learn more about syntax conventions.

Parameters

Name Tipo Required Description
Expr string ✔️ O valor pelo qual reduzir.
Threshold 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.

O parâmetro de limite determina o nível mínimo de similaridade necessário para que os valores sejam agrupados. Com um valor de limite menor (mais próximo de 0), valores mais semelhantes são agrupados, resultando em menos, mas mais grupos semelhantes. Um valor limite maior (mais próximo de 1) requer menos similaridade, resultando em mais grupos menos semelhantes. Recomendamos definir um valor de limite pequeno para entradas grandes. See Examples.
Characters string Uma lista de caracteres que separam os termos. O padrão é todos os caracteres numéricos não ascii. For examples, see Examples.
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.

Returns

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:

Pattern Count Representative
San * 5182 San Bernard
Saint * 2846 Saint Lucy
Moscow 3726 Moscow
*-em-* 2730 Um contra um
Paris 2716 Paris

Examples

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

The examples in this article use publicly available tables in the help cluster, such as the StormEvents table in the Samples database.

The examples in this article use publicly available tables, such as the Weather table in the Weather analytics sample gallery. Talvez seja necessário modificar o nome da tabela na consulta de exemplo para corresponder à tabela em seu workspace.

O exemplo a seguir 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. O limite é definido como 0,001, o que significa que o operador agrupa valores muito semelhantes uns aos outros.

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

Pattern Count Representative
MachineLearning* 1000 MachineLearningX4

O exemplo a seguir 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. O limite é definido como 0,9, o que significa que o operador agrupa valores menos estritamente e permite mais variação.

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 somente os grupos em que o valor MyText aparece em pelo menos 90% das linhas.

Pattern Count Representative
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

If the Characters parameter is unspecified, by default the operator treats all non-alphanumeric characters (including spaces and punctuation) as term separators. The following example shows how the reduce operator behaves when the Characters parameter isn't specified.

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

Output

Pattern Count Representative
others 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

Pattern Count Representative
foo* 10 fooZ1

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

Note

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