Operatore reduce
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati✅ Azure Monitor✅Microsoft Sentinel
Raggruppa un set di stringhe in base alla somiglianza dei valori.
Per ogni gruppo di questo tipo, l'operatore restituisce un pattern
oggetto , count
e 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] by
Expr [with
=
threshold
Soglia] [ characters
=
,
Caratteri]]
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
Expr | string |
✔️ | Valore in base al quale ridurre. |
Threshold | 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 minor numero di gruppi ma più simili. Un valore soglia maggiore richiede una minore somiglianza, con conseguente minore somiglianza tra 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 . |
Valori restituiti
Tabella con il numero di righe presenti in gruppi e colonne denominate pattern
, count
e representative
. Descrive pattern
meglio 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 | Count | Rappresentante |
---|---|---|
San * | 5182 | San Bernard |
Saint * | 2846 | Saint Lucy |
Moscow | 3726 | Moscow |
*-su-* | 2730 | One -on- One |
Parigi | 2716 | Parigi |
Esempi
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 | Count | Rappresentante |
---|---|---|
MachineLearning* | 1000 | MachineLearningX4 |
Valore soglia elevato
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 | Count | Rappresentante |
---|---|---|
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 | Count | Rappresentante |
---|---|---|
altro: | 10 |
Tuttavia, se si specifica che "Z" è un separatore, è come se ogni valore in str
sia 2 termini: 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
Modello | Count | Rappresentante |
---|---|---|
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="-_"
Contenuto correlato
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.