Operatore reduce

Raggruppa un set di stringhe in base alla somiglianza dei valori.

Per ogni gruppo di questo tipo, l'operatore restituisce un patternoggetto , counte representative. Descrive pattern meglio il gruppo, in cui il * carattere rappresenta un carattere jolly. count è il numero di valori nel gruppo e representative è uno dei valori originali nel gruppo.

Sintassi

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

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Tipo Obbligatoria Descrizione
Expr string ✔️ Valore in base al quale ridurre.
Soglia real Valore compreso tra 0 e 1 che determina la frazione minima di righe necessarie per soddisfare i criteri di raggruppamento per attivare un'operazione di riduzione. Il valore predefinito è 0,1.

È consigliabile impostare un valore soglia ridotto per gli input di grandi dimensioni. Con un valore soglia inferiore, i valori più simili vengono raggruppati, con un numero minore di gruppi ma più simili. Un valore soglia maggiore richiede meno somiglianza, con un numero maggiore di gruppi meno simili. Vedere Esempi.
Caratteri string Elenco di caratteri che separano i termini. Il valore predefinito è ogni carattere numerico non ascii. Per esempi, vedere Comportamento del parametro Characters.
ReduceKind string L'unico valore valido è source. Se source viene specificato , l'operatore aggiunge la Pattern colonna alle righe esistenti nella tabella anziché aggregare da Pattern.

Restituisce

Tabella con il numero di righe in cui sono presenti gruppi e colonne denominate pattern, counte representative. Il pattern valore migliore descrive il gruppo, in cui il * carattere rappresenta un carattere jolly o un segnaposto per una stringa di inserimento arbitraria. count è il numero di valori nel gruppo e representative è uno dei valori originali nel gruppo.

Ad esempio, il risultato di reduce by city può includere:

Modello Conteggio Representative
San * 5182 San Bernard
Saint * 2846 San Lucy
Moscow 3726 Moscow
* -on- * 2730 One -on- One
Parigi 2716 Parigi

Esempio

Valore soglia ridotto

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

Modello Conteggio Representative
MachineLearning* 1000 MachineLearningX4

Valore soglia di grandi dimensioni

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

Modello Conteggio 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

Comportamento del parametro Characters

Se il parametro Characters non è specificato, ogni carattere numerico non ascii diventa un separatore di termini.

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

Output

Modello Conteggio Representative
Altri 10

Tuttavia, se si specifica che "Z" è un separatore, è come se ogni valore in str è 2 termini: e tostring(x): foo

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

Output

Modello Conteggio Representative
Foo* 10 fooZ1

Applicare reduce all'input sanificato

Nell'esempio seguente viene illustrato come applicare l'operatore reduce a un input "sanificato", in cui i GUID nella colonna ridotta vengono sostituiti prima di ridurre

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

autocluster

Nota

L'implementazione dell'operatore reduce si basa in gran parte sulla carta A Data Clustering Algorithm for Mining Patterns From Event Logs, di Risto Vaarandi.