diffpatterns-Plug-In
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer
Vergleicht zwei Datasets derselben Struktur und findet Muster diskreter Attribute (Dimensionen), die Unterschiede zwischen den beiden Datasets kennzeichnen. Das Plug-In wird mit dem evaluate
Operator aufgerufen.
diffpatterns
wurde entwickelt, um Fehler zu analysieren (z. B. durch Vergleichen von Fehlern mit Nichtfehlern in einem bestimmten Zeitrahmen), können aber möglicherweise Unterschiede zwischen zwei Datensätzen derselben Struktur finden.
Hinweis
diffpatterns
zielt darauf ab, signifikante Muster zu finden (die Teile des Datenunterschieds zwischen den Sätzen erfassen) und ist nicht für Zeilen-nach-Zeilen-Unterschiede vorgesehen.
Syntax
T | evaluate diffpatterns(
SplitColumn SplitValueA,
SplitValueB [,
WeightColumn,
Threshold,
MaxDimensions,
CustomWildcard,
...],
)
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
SplitColumn | string |
✔️ | Der Spaltenname, der dem Algorithmus angibt, wie die Abfrage in Datasets aufgeteilt wird. 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, die diesen Wert in ihrem SplitColumn als Dataset "A" betrachten. |
SplitValueB | string |
✔️ | Eine Zeichenfolgendarstellung eines der Werte im angegebenen SplitColumn . Alle Zeilen, die diesen Wert in ihrem SplitColumn als Dataset "B" betrachten. |
WeightColumn | string |
Die Spalte, die verwendet wird, um jede Zeile in der Eingabe gemäß 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 | real |
Ein Real im Bereich von 0,015 bis 1. Dieser Wert legt die Minimale Musterverhältnisdifferenz 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. Durch Angeben eines Grenzwerts 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 lebensfähiger Wert in den Daten ist, sollte ein anderer Wildcardwert 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 einen kleinen Satz von Mustern zurück, die unterschiedliche 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 der diffpatterns
Rückgabe der folgenden Spalten:
SegmentId: Die dem Muster in der aktuellen Abfrage zugewiesene Identität (Hinweis: IDs sind nicht garantiert identisch bei wiederholten Abfragen).
CountA: Die Anzahl der Zeilen, die vom Muster in Set A erfasst werden (Set A ist das Äquivalent von
where tostring(splitColumn) == SplitValueA
).CountB: Die Anzahl der Zeilen, die vom Muster in Set B erfasst werden (Set B ist das Äquivalent von
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 * AnzahlB / Anzahl(SetB)).
PercentDiffAB: die absolute Prozentpunktdifferenz zwischen A und B (|PercentA - PercentB|) ist das Hauptmaß der 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 den Schnittpunkt der Nicht-Wildcard-Werte 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 Wildcardwert, der standardmäßig NULL ist. Lesen Sie im Abschnitt "Argumente" weiter unten, wie Wildcards manuell geändert werden können.
- Hinweis: Die Muster unterscheiden sich häufig nicht. Sie können überlappend sein und decken in der Regel nicht alle ursprünglichen Zeilen ab. Einige Zeilen fallen ggf. nicht in eines der Muster.
Tipp
- Verwenden Sie die Position und das Projekt 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" )
Output
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 | Trained 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 | Law Enforcement | |||
7 | 150 | 117 | 3,28 | 8,93 | 5,65 | Hochwasser | |||
8 | 362 | 176 | 7,91 | 13,44 | 5,52 | Emergency Manager |