Partager 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-é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, reallong. 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 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

  • 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