Share via


diffpatterns, plug-in

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-défaillances dans un laps de temps donné), mais peut potentiellement trouver des différences entre deux jeux de données de la même structure.

Notes

diffpatterns vise à trouver des modèles significatifs (qui capturent des parties de la différence de données entre les jeux) et n’est pas destiné aux différences ligne par ligne.

Syntax

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

Découvrez les conventions de syntaxe.

Paramètres

Nom Type Obligatoire Description
SplitColumn string ✔️ Nom de colonne qui indique à l’algorithme comment fractionner la requête en jeux de données. Selon les valeurs spécifiées pour les arguments SplitValueA et SplitValueB , l’algorithme divise la requête en deux jeux de données, « A » et « B », et analyse les différences entre eux. Par conséquent, la colonne fractionnée doit comprendre au moins deux valeurs distinctes.
SplitValueA string ✔️ Représentation sous forme de chaîne d’une des valeurs du SplitColumn spécifié. Toutes les lignes qui ont cette valeur dans leur SplitColumn considéré comme jeu de données « A ».
SplitValueB string ✔️ Représentation sous forme de chaîne d’une des valeurs du SplitColumn spécifié. 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 de la pondération spécifiée. Doit être le nom d’une colonne numérique, telle que int, long, real. 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 long Long dans la plage de 0,015 à 1. Cette valeur définit la différence minimale de rapport de modèle 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 corrélé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 (c’est-à-dire un modèle qui capture un pourcentage élevé des lignes du premier jeu de données et un faible pourcentage de lignes dans le 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 : identité affectée au modèle dans la requête actuelle (remarque : il n’est pas garanti que les ID soient identiques dans les requêtes répétées).

  • CountA : nombre de lignes capturées par le modèle dans l’ensemble A (L’ensemble A est l’équivalent de where tostring(splitColumn) == SplitValueA).

  • CountB : nombre de lignes capturées par le modèle dans l’ensemble B (L’ensemble B est l’équivalent de where tostring(splitColumn) == SplitValueB).

  • PercentA : pourcentage de lignes de l’ensemble A capturées par le modèle (100.0 * CountA / count(SetA)).

  • PercentB : pourcentage de lignes dans l’ensemble B capturées par le modèle (100.0 * CountB / count(SetB)).

  • PercentDiffAB : différence absolue en points de pourcentage entre A et B (|PercentA - PercentB|) est la mesure main 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 pour 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. Voir dans 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. Elles peuvent se chevaucher et ne couvrent généralement pas toutes les lignes d’origine. Certaines lignes peuvent n’appartenir à aucun modèle.

Conseil

  • Utilisez et projetez dans le canal d’entrée pour réduire les données à ce qui vous intéresse.
  • Lorsque vous trouvez une ligne intéressante, vous pouvez l’explorer plus en détail en ajoutant ses valeurs spécifiques à votre filtre where .

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