Operatore reducereduce operator

Raggruppa un insieme di stringhe in base alla somiglianza dei valori.Groups a set of strings together based on values similarity.

T | reduce by LogMessage with threshold=0.1

Per ogni gruppo di questo tipo, viene restituito un modello che descrive meglio il gruppo (probabilmente usando il * carattere Asterix () per rappresentare i caratteri jolly), un conteggio del numero di valori nel gruppo e un rappresentante del gruppo (uno dei valori originali del gruppo).For each such group, it outputs a pattern that best describes the group (possibly using the asterix (*) character to represent wildcards), a count of the number of values in the group, and a representative of the group (one of the original values in the group).

SintassiSyntax

T | reduce [ kind = ReduceKind] by expr [ with [ threshold = Threshold] [ , characters = caratteri]]T | reduce [kind = ReduceKind] by Expr [with [threshold = Threshold] [, characters = Characters] ]

ArgomentiArguments

  • Expr: espressione che restituisce un string valore.Expr: An expression that evaluates to a string value.
  • Threshold: real valore letterale nell'intervallo (0.. 1).Threshold: A real literal in the range (0..1). Il valore predefinito è 0,1.Default is 0.1. Per gli input di grandi dimensioni, la soglia deve essere bassa.For large inputs, threshold should be small.
  • Characters: string valore letterale contenente un elenco di caratteri da aggiungere all'elenco di caratteri che non interrompono un termine.Characters: A string literal containing a list of characters to add to the list of characters that don't break a term. (Ad esempio, se si desidera aaa=bbbb e aaa:bbb per ognuno è un termine intero, anziché interrompere in = e : , utilizzare ":=" come valore letterale stringa).(For example, if you want aaa=bbbb and aaa:bbb to each be a whole term, rather than break on = and :, use ":=" as the string literal.)
  • ReduceKind: specifica la versione di riduzione.ReduceKind: Specifies the reduce flavor. L'unico valore valido per l'ora è source .The only valid value for the time being is source.

RestituisceReturns

Questo operatore restituisce una tabella con tre colonne ( Pattern , Count e Representative ) e il numero di righe disponibili per i gruppi.This operator returns a table with three columns (Pattern, Count, and Representative), and as many rows as there are groups. Patternè il valore di pattern per il gruppo, con * usato come carattere jolly (che rappresenta stringhe di inserimento arbitrarie), Count conta il numero di righe nell'input dell'operatore rappresentate da questo modello e Representative è un valore dell'input che rientra in questo gruppo.Pattern is the pattern value for the group, with * being used as a wildcard (representing arbitrary insertion strings), Count counts how many rows in the input to the operator are represented by this pattern, and Representative is one value from the input that falls into this group.

Se [kind=source] si specifica, l'operatore aggiungerà la Pattern colonna alla struttura della tabella esistente.If [kind=source] is specified, the operator will append the Pattern column to the existing table structure. Si noti che la sintassi di uno schema di questa versione potrebbe essere soggetta a modifiche future.Note that the syntax an schema of this flavor might be subjected to future changes.

Ad esempio, il risultato di reduce by city può includere:For example, the result of reduce by city might include:

CriterioPattern ConteggioCount RepresentativeRepresentative
San *San * 51825182 San BernardSan Bernard
Saint *Saint * 28462846 Saint LucySaint Lucy
MoscowMoscow 37263726 MoscowMoscow
* -on- ** -on- * 27302730 Uno-a-unoOne -on- One
ParigiParis 27162716 ParigiParis

Un altro esempio con la suddivisione in token personalizzata:Another example with customized tokenization:

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" 
CriterioPattern ConteggioCount RepresentativeRepresentative
MachineLearningMachineLearning* 10001000 MachineLearningX4MachineLearningX4

EsempioExamples

Nell'esempio seguente viene illustrato come è possibile applicare l' reduce operatore a un input "purificato", in cui i GUID della colonna da ridurre vengono sostituiti prima della riduzioneThe following example shows how one might apply the reduce operator to a "sanitized" input, in which GUIDs in the column being reduced are replaced prior to reducing

// 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(@"[[:xdigit:]]{8}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{12}", @"GUID", Text)
// 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="-_"

Vedere ancheSee also

autoclusterautocluster

NoteNotes

L'implementazione dell' reduce operatore è in gran parte basata sul documento un algoritmo di clustering dei dati per i modelli di data mining dai registri eventi, di Risto Vaarandi.The implementation of reduce operator is largely based on the paper A Data Clustering Algorithm for Mining Patterns From Event Logs, by Risto Vaarandi.