diffpatterns, plug-in
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer
Compare deux jeux de données de la même structure et recherche des modèles d’attributs discrets (dimensions) qui caractérisent les différences entre les deux jeux de données. Le plug-in est appelé avec l’opérateur evaluate
.
diffpatterns
a été développé pour faciliter l’analyse des défaillances (par exemple, en comparant les échecs aux non-échecs dans un délai donné), mais peut potentiellement trouver des différences entre deux jeux de données de la même structure.
Remarque
diffpatterns
vise à trouver des modèles significatifs (qui capturent des parties de la différence de données entre les jeux) et ne sont pas destinés aux différences de ligne par ligne.
Syntaxe
T | evaluate diffpatterns(
SplitColumn SplitValueA,
SplitValueB [,
WeightColumn,
Threshold,
MaxDimensions,
CustomWildcard,
...],
)
En savoir plus sur les conventions de syntaxe.
Paramètres
Nom | Type | Requise | Description |
---|---|---|---|
SplitColumn | string |
✔️ | Nom de colonne qui indique à l’algorithme comment fractionner la requête en jeux de données. En fonction des valeurs spécifiées pour les arguments SplitValueA et SplitValueB , l’algorithme fractionne la requête en deux jeux de données, « A » et « B », et analyse les différences entre elles. Par conséquent, la colonne fractionnée doit comprendre au moins deux valeurs distinctes. |
SplitValueA | string |
✔️ | Représentation sous forme de chaîne de l’une des valeurs de SplitColumn spécifiée. Toutes les lignes qui ont cette valeur dans leur SplitColumn considéré comme un jeu de données « A ». |
SplitValueB | string |
✔️ | Représentation sous forme de chaîne de l’une des valeurs de SplitColumn spécifiée. Toutes les lignes qui ont cette valeur dans leur SplitColumn considéré comme un jeu de données « B ». |
WeightColumn | string |
Colonne utilisée pour prendre en compte chaque ligne de l’entrée en fonction du poids spécifié. Doit être un nom d’une colonne numérique, telle que int , real long . Par défaut, chaque ligne a une pondération de '1'. Pour utiliser la valeur par défaut, entrez le tilde : ~ . Il est courant d’utiliser une colonne de pondération en prenant en compte l’échantillonnage ou la création de compartiments/l’agrégation des données déjà incorporées dans chaque ligne.Exemple : T | extend splitColumn= iff(request_responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", sample_Count) |
|
Seuil | real |
Réel dans la plage de 0,015 à 1. Cette valeur définit la différence de rapport de modèle minimale entre les deux ensembles. La valeur par défaut est 0.05. Pour utiliser la valeur par défaut, entrez le tilde : ~ .Exemple : T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", 0.04) |
|
MaxDimensions | int |
Définit le nombre maximal de dimensions non liées par modèle de résultat. En spécifiant une limite, vous réduisez le runtime de requête. La valeur par défaut est illimitée. Pour utiliser la valeur par défaut, entrez le tilde : ~ .Exemple : T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", "~", 3) |
|
CustomWildcard | string |
Définit la valeur de caractère générique pour un type spécifique dans la table de résultats qui indique que le modèle actuel ne présente pas de restriction sur cette colonne. La valeur par défaut est Null, à l’exception des colonnes de chaîne pour lesquelles la valeur par défaut est une chaîne vide. Si la valeur par défaut est une valeur viable dans les données, une autre valeur générique doit être utilisée. Par exemple : * . Pour utiliser la valeur par défaut, entrez le tilde : ~ .Exemple : T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", "~", "~", int(-1), double(-1), long(0), datetime(1900-1-1)) |
Retours
diffpatterns
retourne un petit ensemble de modèles qui capturent différentes parties des données dans les deux jeux (autrement dit, un modèle capturant un pourcentage important des lignes du premier jeu de données et un faible pourcentage des lignes du deuxième jeu de données). Chaque modèle est représenté par une ligne dans les résultats.
Le résultat de diffpatterns
retourne les colonnes suivantes :
SegmentId : l’identité affectée au modèle dans la requête actuelle (remarque : les ID ne sont pas garantis comme étant identiques dans les requêtes répétées).
CountA : nombre de lignes capturées par le modèle dans Set A (Set A est l’équivalent de
where tostring(splitColumn) == SplitValueA
).CountB : nombre de lignes capturées par le modèle dans l’ensemble B (Set B est l’équivalent de
where tostring(splitColumn) == SplitValueB
).PercentA : pourcentage de lignes dans l’ensemble A capturé par le modèle (100,0 * CountA / count(SetA)).
PercentB : pourcentage de lignes dans l’ensemble B capturé par le modèle (100,0 * CountB / count(SetB)).
PercentDiffAB : différence de point de pourcentage absolue entre A et B (|PercentA - PercentB|) est la mesure principale de l’importance des modèles dans la description de la différence entre les deux ensembles.
Reste des colonnes : sont le schéma d’origine de l’entrée et décrivent le modèle, chaque ligne (modèle) représente l’intersection des valeurs non génériques des colonnes (équivalent de
where col1==val1 and col2==val2 and ... colN=valN
chaque valeur non générique dans la ligne).
Pour chaque modèle, les colonnes qui ne sont pas définies dans le modèle (autrement dit, sans restriction sur une valeur spécifique) contiennent une valeur générique, qui est null par défaut. Consultez la section Arguments ci-dessous comment les caractères génériques peuvent être modifiés manuellement.
- Remarque : les modèles ne sont souvent pas distincts. Ils peuvent se chevaucher et ne couvrent généralement pas toutes les lignes d’origine. Certaines lignes peuvent n’appartenir à aucun modèle.
Conseil
Exemple
StormEvents
| where monthofyear(StartTime) == 5
| extend Damage = iff(DamageCrops + DamageProperty > 0 , 1 , 0)
| project State , EventType , Source , Damage, DamageCrops
| evaluate diffpatterns(Damage, "0", "1" )
Sortie
ID de segment | CountA | CountB | PercentA | PercentB | PercentDiffAB | État | Type d’événement | Source | Récoltes |
---|---|---|---|---|---|---|---|---|---|
0 | 2278 | 93 | 49,8 | 7.1 | 42,7 | Grêle | 0 | ||
1 | 779 | 512 | 17.03 | 39,08 | 22,05 | Vent d’orage | |||
2 | 1098 | 118 | 24,01 | 9,01 | 15 | Observateur chevronné | 0 | ||
3 | 136 | 158 | 2.97 | 12,06 | 9,09 | Journal | |||
4 | 359 | 214 | 7,85 | 16,34 | 8,49 | Crue soudaine | |||
5 | 50 | 122 | 1,09 | 9.31 | 8,22 | IOWA | |||
6 | 655 | 279 | 14,32 | 21,3 | 6,98 | Respect des lois | |||
7 | 150 | 117 | 3,28 | 8,93 | 5,65 | Crue | |||
8 | 362 | 176 | 7,91 | 13,44 | 5,52 | Gestionnaire des urgences |