operador reduce
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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
Valor 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 | Count | Representante |
---|---|---|
Aprendizado de máquina* | 1000 | Aprendizado de máquinaX4 |
Valor 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 | 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 Caracteres
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
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 | Count | Representante |
---|---|---|
Foo* | 10 | fooZ1 |
Aplicar reduce
à entrada higienizada
O exemplo a seguir mostra como se pode aplicar o reduce
operador a uma entrada "limpa", 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="-_"
Conteúdo relacionado
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.