diffpatterns-Plug-In

Vergleicht zwei Datasets derselben Struktur und findet Muster diskreter Attribute (Dimensionen), die Unterschiede zwischen den beiden Datasets charakterisieren. Das Plug-In wird mit dem evaluate Operator aufgerufen.

diffpatterns wurde entwickelt, um Fehler zu analysieren (z. B. durch Vergleich von Fehlern mit Nichtfehlern in einem bestimmten Zeitrahmen), kann aber möglicherweise Unterschiede zwischen zwei beliebigen Datasets derselben Struktur finden.

Hinweis

diffpatterns zielt darauf ab, signifikante Muster zu finden (die Teile der Datendifferenz zwischen den Sätzen erfassen) und ist nicht für Zeilen-zu-Zeilen-Unterschiede vorgesehen.

Syntax

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

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Typ Erforderlich BESCHREIBUNG
SplitColumn string ✔️ Der Spaltenname, der dem Algorithmus angibt, wie die Abfrage in Datasets aufgeteilt werden soll. Gemäß den angegebenen Werten für die Argumente SplitValueA und SplitValueB teilt der Algorithmus die Abfrage in zwei Datasets auf, "A" und "B", und analysiert die Unterschiede zwischen ihnen. Die split-Spalte muss mindestens zwei eindeutige Werte enthalten.
SplitValueA string ✔️ Eine Zeichenfolgendarstellung eines der Werte im angegebenen SplitColumn . Alle Zeilen mit diesem Wert in ihrem SplitColumn werden als Dataset "A" betrachtet.
SplitValueB string ✔️ Eine Zeichenfolgendarstellung eines der Werte im angegebenen SplitColumn . Alle Zeilen, die diesen Wert in ihrem SplitColumn enthalten, werden als Dataset "B" betrachtet.
WeightColumn string Die Spalte, die verwendet wird, um jede Zeile in der Eingabe entsprechend der angegebenen Gewichtung zu berücksichtigen. Muss ein Name einer numerischen Spalte sein, zint. B. , long. real Standardmäßig weist jede Zeile eine Gewichtung von „1“ auf. Um den Standardwert zu verwenden, geben Sie die Tilde ein: ~. Eine übliche Nutzung einer Gewichtungsspalte besteht darin, die Stichprobenerstellung oder die Bucket-Zuordnung/Aggregation der Daten zu berücksichtigen, die bereits in die einzelnen Zeilen eingebettet sind.

Beispiel: T | extend splitColumn= iff(request_responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", sample_Count)
Schwellenwert long Eine Lange im Bereich von 0,015 bis 1. Dieser Wert legt den minimalen Musterverhältnisunterschied zwischen den beiden Sätzen fest. Der Standardwert ist 0,05. Um den Standardwert zu verwenden, geben Sie die Tilde ein: ~.

Beispiel: T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", 0.04)
MaxDimensions int Legt die maximale Anzahl nicht korrelierte Dimensionen pro Ergebnismuster fest. Wenn Sie ein Limit angeben, verringern Sie die Abfragelaufzeit. Der Standardwert ist unbegrenzt. Um den Standardwert zu verwenden, geben Sie die Tilde ein: ~.

Beispiel: T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", "~", 3)
CustomWildcard string Legt den Platzhalterwert für einen bestimmten Typ in der Ergebnistabelle fest, der angibt, dass das aktuelle Muster keine Einschränkung für diese Spalte besitzt. Der Standardwert ist NULL, mit Ausnahme von Zeichenfolgenspalten, für die der Standardwert eine leere Zeichenfolge ist. Wenn der Standardwert ein praktikabler Wert in den Daten ist, sollte ein anderer Wert verwendet werden. Beispiel: *. Um den Standardwert zu verwenden, geben Sie die Tilde ein: ~.

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

Gibt zurück

diffpatterns gibt eine kleine Gruppe von Mustern zurück, die verschiedene Teile der Daten in den beiden Sätzen erfassen (d. a. ein Muster, das einen großen Prozentsatz der Zeilen im ersten Dataset und einen niedrigen Prozentsatz der Zeilen im zweiten Satz erfasst). Jede Zeile in den Ergebnissen steht für ein Muster.

Das Ergebnis von diffpatterns gibt die folgenden Spalten zurück:

  • SegmentId: Die Identität, die dem Muster in der aktuellen Abfrage zugewiesen ist (Hinweis: IDs sind bei wiederholten Abfragen nicht garantiert identisch).

  • CountA: Die Anzahl der Zeilen, die vom Muster in Set A erfasst werden (Set A entspricht ).where tostring(splitColumn) == SplitValueA

  • CountB: Die Anzahl der Zeilen, die vom Muster in Set B erfasst werden (Set B entspricht ).where tostring(splitColumn) == SplitValueB

  • PercentA: Der Prozentsatz der Zeilen in Set A, der vom Muster erfasst wird (100.0 * CountA /count(SetA)).

  • PercentB: Der Prozentsatz der Zeilen in Set B, der vom Muster erfasst wird (100.0 * CountB /count(SetB)).

  • PercentDiffAB: die absolute Prozentuale Punktdifferenz zwischen A und B (|PercentA – PercentB|) ist das Standard Maß für die Bedeutung von Mustern bei der Beschreibung des Unterschieds zwischen den beiden Sätzen.

  • Rest der Spalten: Sind das ursprüngliche Schema der Eingabe und beschreiben das Muster, jede Zeile (Muster) stellt die Schnittmenge der Nicht-Feldhalterwerte der Spalten dar (entspricht where col1==val1 and col2==val2 and ... colN=valN für jeden Nicht-Wildcard-Wert in der Zeile).

Für jedes Muster enthalten Spalten, die nicht im Muster festgelegt sind (d. h. ohne Einschränkung für einen bestimmten Wert), einen Feldhalterwert, der standardmäßig NULL ist. Sehen Sie sich im Abschnitt Argumente unten an, wie Sie Dies manuell ändern können.

  • Hinweis: Die Muster unterscheiden sich häufig nicht. Sie können sich überschneiden und decken in der Regel nicht alle ursprünglichen Zeilen ab. Einige Zeilen fallen ggf. nicht in eines der Muster.

Tipp

  • Verwenden Sie where und project in der Eingabepipeline, um die Daten auf das zu reduzieren, was Sie interessieren.
  • Wenn Sie eine interessante Zeile finden, können Sie dafür einen Drilldown durchführen, indem Sie die jeweiligen Werte dem where -Filter hinzufügen.

Beispiel

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

Ausgabe

SegmentId CountA CountB PercentA PercentB PercentDiffAB State EventType Quelle DamageCrops
0 2278 93 49,8 7.1 42,7 Hagel 0
1 779 512 17,03 39,08 22,05 Sturm
2 1.098 118 24,01 9,01 15 Ausgebildeter „Spotter“ 0
3 136 158 2.97 12,06 9,09 Zeitung
4 359 214 7,85 16,34 8,49 Überschwemmung
5 50 122 1,09 9,31 8,22 IOWA
6 655 279 14,32 21,3 6,98 Strafverfolgungsbehörden
7 150 117 3,28 8,93 5,65 Hochwasser
8 362 176 7,91 13,44 5,52 Katastrophenschutz