operador reduce
Agrupa um conjunto de cadeias com base na semelhança de valor.
Para cada grupo deste tipo, o operador devolve um pattern
, count
e representative
. O pattern
melhor descreve o grupo, no qual o *
caráter representa um caráter universal. É count
o número de valores no grupo e o representative
é um dos valores originais no grupo.
Syntax
T|
reduce
[kind
=
ReduceKind] by
Expr [with
[threshold
=
Threshold] [,
characters
=
Characters]]
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Tipo | Necessá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 de linhas necessária para corresponder aos critérios de agrupamento para acionar uma operação de redução. O valor predefinido é 0,1. Recomendamos que defina um pequeno valor de limiar para entradas grandes. Com um valor de limiar mais pequeno, os valores mais semelhantes são agrupados em conjunto, o que resulta em menos grupos, mas mais semelhantes. Um valor de limiar maior requer menos semelhança, o que resulta em mais grupos menos semelhantes. Veja Exemplos. |
|
Carateres | string |
Uma lista de carateres que se separam entre termos. A predefinição é cada caráter numérico não ascii. Por exemplo, veja Parâmetro Comportamento dos Carateres. | |
ReduceKind | string |
O único valor válido é source . Se source for especificado, o operador acrescenta a Pattern coluna às linhas existentes na tabela em vez de agregar por Pattern . |
Devoluções
Uma tabela com tantas linhas como existem grupos e colunas intitulados pattern
, count
e representative
. O pattern
melhor descreve o grupo, no qual o *
caráter representa um caráter universal ou um marcador de posição para uma cadeia de inserção arbitrária. É 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 | de palavras | Representante |
---|---|---|
San * | 5182 | São Bernardo |
Santo * | 2846 | Santa Lúcia |
Moscovo | 3726 | Moscovo |
* -on- * | 2730 | Um - em- Um |
Paris | 2716 | Paris |
Exemplos
Valor de limiar 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 | de palavras | Representante |
---|---|---|
MachineLearning* | 1000 | MachineLearningX4 |
Valor de limiar 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 | de palavras | 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 |
Parâmetro Comportamento dos Carateres
Se o parâmetro Carateres não for especificado, cada caráter numérico não ascii torna-se 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 | de palavras | Representante |
---|---|---|
outros | 10 |
No entanto, se especificar que "Z" é um separador, é 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 | de palavras | Representante |
---|---|---|
foo* | 10 | fooZ1 |
Aplicar reduce
a entradas limpas
O exemplo seguinte mostra como se pode aplicar o reduce
operador a uma entrada "limpa", na qual os GUIDs na coluna que está a ser reduzida são substituídos antes de reduzir
// 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
Nota
A implementação do reduce
operador baseia-se, em grande parte, no documento A Data Clustering Algorithm for Mining Patterns From Event Logs (Algoritmo de Clustering de Dados para Padrões de Extração dos Registos de Eventos), de Risto Vaarandi.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários