Condividi tramite


Plug-in diffpatterns

Confronta due set di dati della stessa struttura e trova modelli di attributi discreti (dimensioni) che caratterizzano le differenze tra i due set di dati. Il plug-in viene richiamato con l'operatore evaluate .

diffpatterns è stato sviluppato per facilitare l'analisi degli errori(ad esempio, confrontando gli errori con gli errori in un determinato intervallo di tempo), ma può potenzialmente trovare differenze tra due set di dati della stessa struttura.

Nota

diffpatterns mira a trovare modelli significativi (che acquisisce parti della differenza di dati tra i set) e non è progettato per le differenze di riga per riga.

Sintassi

T | evaluate diffpatterns(SplitColumn SplitValueA, SplitValueB [, WeightColumn,Threshold, MaxDimensions,CustomWildcard, ...], )

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Digita Obbligatorio Descrizione
SplitColumn string ✔️ Nome della colonna che indica all'algoritmo come suddividere la query in set di dati. In base ai valori specificati per gli argomenti SplitValueA e SplitValueB , l'algoritmo suddivide la query in due set di dati, "A" e "B" e analizza le differenze tra di esse. Di conseguenza, la colonna di divisione deve avere almeno due valori distinti.
SplitValueA string ✔️ Rappresentazione di stringa di uno dei valori in SplitColumn specificato. Tutte le righe con questo valore in SplitColumn considerate come set di dati "A".
SplitValueB string ✔️ Rappresentazione di stringa di uno dei valori in SplitColumn specificato. Tutte le righe con questo valore in SplitColumn considerate come set di dati "B".
WeightColumn string Colonna utilizzata per considerare ogni riga nell'input in base al peso specificato. Deve essere un nome di una colonna numerica, ad esempio int, long, real. Per impostazione predefinita il peso di ogni riga è pari a "1". Per usare il valore predefinito, immettere la tilde: ~. Una colonna di ponderazione viene in genere usata per tenere in considerazione il campionamento o il bucket/aggregazione dei dati già incorporati in ogni riga.

Esempio: T | extend splitColumn= iff(request_responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", sample_Count)
Threshold long Lungo nell'intervallo da 0,015 a 1. Questo valore imposta la differenza minima tra i due set. Il valore predefinito è 0,05. Per usare il valore predefinito, immettere la tilde: ~.

Esempio: T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", 0.04)
MaxDimensions int Imposta il numero massimo di dimensioni non correlate per ogni criterio di risultato. Specificando un limite, si riduce il runtime di query. Il valore predefinito è illimitato. Per usare il valore predefinito, immettere la tilde: ~.

Esempio: T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", "~", 3)
CustomWildcard string Imposta il valore del carattere jolly per un tipo specifico nella tabella dei risultati, che indica che il criterio corrente non prevede una restrizione su questa colonna. Il valore predefinito è Null, ad eccezione delle colonne stringa per le quali il valore predefinito è una stringa vuota. Se il valore predefinito è un valore valido nei dati, deve essere usato un valore jolly diverso. Ad esempio: *. Per usare il valore predefinito, immettere la tilde: ~.

Esempio: T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", "~", "~", int(-1), double(-1), long(0), datetime(1900-1-1))

Valori restituiti

diffpatterns restituisce un piccolo set di modelli che acquisisce parti diverse dei dati nei due set, ovvero un criterio che acquisisce una percentuale elevata delle righe nel primo set di dati e una bassa percentuale delle righe nel secondo set. Ogni modello è rappresentato da una riga nei risultati.

Il risultato di diffpatterns restituisce le colonne seguenti:

  • SegmentId: l'identità assegnata al modello nella query corrente (nota: gli ID non sono necessariamente uguali nelle query ripetute).

  • CountA: il numero di righe acquisite dal modello in Set A (Set A è l'equivalente di where tostring(splitColumn) == SplitValueA).

  • CountB: il numero di righe acquisite dal modello in Set B (Set B è l'equivalente di where tostring(splitColumn) == SplitValueB).

  • PercentA: percentuale di righe in Set A acquisita dal modello (100,0 * CountA/count(SetA)).

  • PercentB: percentuale di righe in Set B acquisite dal modello (100,0 * CountB/count(SetB)).

  • PercentDiffAB: differenza del punto percentuale assoluto tra A e B (|PercentA - PercentB|) è la misura principale del significato dei modelli nella descrizione della differenza tra i due set.

  • Resto delle colonne: sono lo schema originale dell'input e descrivono il criterio, ogni riga (criterio) rappresenta l'intersezione dei valori non jolly delle colonne (equivalente di where col1==val1 and col2==val2 and ... colN=valN per ogni valore non con caratteri jolly nella riga).

Per ogni criterio, le colonne che non sono impostate nel criterio ,ovvero senza restrizioni per un valore specifico, conterranno un valore con caratteri jolly, che è Null per impostazione predefinita. Vedere nella sezione Argomenti sotto il modo in cui i caratteri jolly possono essere modificati manualmente.

  • Nota: i modelli spesso non sono distinti. Possono sovrapporsi e in genere non coprono tutte le righe originali. È possibile che alcune righe non rientrino in alcun modello.

Suggerimento

  • Usare dove e proiettare nella pipe di input per ridurre i dati solo a ciò che si è interessati.
  • Quando si trova una riga interessante, è possibile che si voglia visualizzarne i dettagli, aggiungendo i rispettivi valori specifici al filtro where .

Esempio

StormEvents 
| where monthofyear(StartTime) == 5
| extend Damage = iff(DamageCrops + DamageProperty > 0 , 1 , 0)
| project State , EventType , Source , Damage, DamageCrops
| evaluate diffpatterns(Damage, "0", "1" )

Output

SegmentId CountA CountB PercentA PercentB PercentDiffAB Provincia EventType Origine DamageCrops
0 2278 93 49.8 7.1 42.7 Grandine 0
1 779 512 17.03 39.08 22.05 Vento di tempesta
2 1098 118 24.01 9.01 15 Trained Spotter 0
3 136 158 2.97 12.06 9.09 Giornale
4 359 214 7.85 16.34 8.49 Piena improvvisa
5 50 122 1.09 9.31 8.22 IOWA
6 655 279 14.32 21.3 6.98 Applicazione della legge
7 150 117 3.28 8.93 5.65 Alluvione
8 362 176 7.91 13.44 5.52 Responsabile della gestione emergenze