Condividi tramite


Operatore reduce

Si applica a: ✅Microsoft Fabric

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 [withthreshold= 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, counte 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

L'esempio in questa sezione illustra come usare la sintassi per iniziare.

Gli esempi in questo articolo usano tabelle disponibili pubblicamente nel cluster della Guida , ad esempio la tabella StormEvents nel database degli esempi.

Gli esempi in questo articolo usano tabelle disponibili pubblicamente, ad esempio la tabella StormEvents in Analisi meteo dati di esempio.

Valore soglia ridotto

Questa query genera un intervallo di numeri, crea una nuova colonna con stringhe concatenate e numeri interi casuali e quindi raggruppa le righe in base alla nuova colonna con parametri di riduzione specifici.

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

Questa query genera un intervallo di numeri, crea una nuova colonna con stringhe concatenate e numeri interi casuali e quindi raggruppa le righe in base alla nuova colonna con parametri di riduzione specifici.

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

Il risultato include solo i gruppi in cui il valore MyText viene visualizzato in almeno 90% delle righe.

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 di 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 due 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:

Iniziare con alcuni record della tabella Trace. Ridurre quindi la colonna Text che include GUID casuali. Poiché i GUID casuali interferiscono con l'operazione di riduzione, sostituirli tutti con la stringa "GUID". Eseguire ora l'operazione di riduzione. Nel caso in cui siano presenti altri identificatori "quasi casuali" con caratteri incorporati "-" o "_", considerano i caratteri come breaker non termini.

Trace
| take 10000
| extend Text = replace(@"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", "GUID", Text)
| reduce by Text with characters="-_"

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.