Partage via


opérateur reduce

S’applique à : ✅Microsoft Fabric

Regroupe un ensemble de chaînes en fonction de la similarité des valeurs.

Pour chaque groupe de ce type, l’opérateur retourne un pattern, countet representative. Le pattern meilleur décrit le groupe dans lequel le * caractère représente un caractère générique. Il count s’agit du nombre de valeurs dans le groupe, et il representative s’agit de l’une des valeurs d’origine du groupe.

Syntaxe

T|reduce [kind= ReduceKind] byExpr [with [threshold= Threshold] [,characters=Characters]]

En savoir plus sur les conventions de syntaxe.

Paramètres

Nom Type Requise Description
Expr string ✔️ Valeur par laquelle réduire.
Seuil real Valeur comprise entre 0 et 1 qui détermine la fraction minimale des lignes requise pour correspondre aux critères de regroupement afin de déclencher une opération de réduction. La valeur par défaut est 0,1.

Nous vous recommandons de définir une petite valeur de seuil pour les entrées volumineuses. Avec une valeur de seuil plus petite, des valeurs plus similaires sont regroupées, ce qui entraîne moins de groupes mais plus similaires. Une valeur de seuil supérieure nécessite moins de similarité, ce qui entraîne davantage de groupes moins similaires. Voir Exemples.
Caractères string Liste des caractères qui séparent les termes. La valeur par défaut est chaque caractère numérique non ascii. Pour obtenir des exemples, consultez Le paramètre Comportement des caractères.
ReduceKind string La seule valeur valide est source. Si source elle est spécifiée, l’opérateur ajoute la Pattern colonne aux lignes existantes de la table au lieu d’agréger par Pattern.

Retours

Table avec autant de lignes qu’il existe des groupes et des colonnes intitulés pattern, countet representative. Le pattern meilleur décrit le groupe dans lequel le * caractère représente un caractère générique ou un espace réservé pour une chaîne d’insertion arbitraire. Il count s’agit du nombre de valeurs dans le groupe, et il representative s’agit de l’une des valeurs d’origine du groupe.

Par exemple, le résultat de reduce by city peut inclure :

Modèle Count Représentant
San * 5,182 San Bernard
Saint * 2,846 Saint Lucy
Moscow 3726 Moscow
*-sur-* 2730 Un -on- Un
Paris 2716 Paris

Exemples

L’exemple de cette section montre comment utiliser la syntaxe pour vous aider à commencer.

Les exemples de cet article utilisent des tables disponibles publiquement dans le cluster d’aide, comme la table StormEvents dans la base de données Exemples.

Les exemples de cet article utilisent des tables disponibles publiquement, telles que la table StormEvents dans l’analyse météo exemples de données.

Petite valeur de seuil

Cette requête génère une plage de nombres, crée une colonne avec des chaînes concaténées et des entiers aléatoires, puis regroupe les lignes par la nouvelle colonne avec des paramètres de réduction spécifiques.

range x from 1 to 1000 step 1
| project MyText = strcat("MachineLearningX", tostring(toint(rand(10))))
| reduce by MyText  with threshold=0.001 , characters = "X" 

Sortie

Modèle Count Représentant
MachineLearning* 1 000 MachineLearningX4

Valeur de seuil élevée

Cette requête génère une plage de nombres, crée une colonne avec des chaînes concaténées et des entiers aléatoires, puis regroupe les lignes par la nouvelle colonne avec des paramètres de réduction spécifiques.

range x from 1 to 1000 step 1
| project MyText = strcat("MachineLearningX", tostring(toint(rand(10))))
| reduce by MyText  with threshold=0.9 , characters = "X" 

Sortie

Le résultat inclut uniquement les groupes où la valeur MyText apparaît dans au moins 90% des lignes.

Modèle Count Représentant
MachineLearning* 177 MachineLearningX9
MachineLearning* 102 MachineLearningX0
MachineLearning* 106 MachineLearningX1
MachineLearning* 96 MachineLearningX6
MachineLearning* 110 MachineLearningX4
MachineLearning* 100 MachineLearningX3
MachineLearning* 99 MachineLearningX8
MachineLearning* 104 MachineLearningX7
MachineLearning* 106 MachineLearningX2

Comportement du paramètre Characters

Si le paramètre Characters n’est pas spécifié, chaque caractère numérique non ascii devient un séparateur de termes.

range x from 1 to 10 step 1 | project str = strcat("foo", "Z", tostring(x)) | reduce by str

Sortie

Modèle Count Représentant
autres 10

Toutefois, si vous spécifiez que « Z » est un séparateur, il est comme si chaque valeur dans str est deux termes : foo et tostring(x):

range x from 1 to 10 step 1 | project str = strcat("foo", "Z", tostring(x)) | reduce by str with characters="Z"

Sortie

Modèle Count Représentant
Foo* 10 fooZ1

Appliquer reduce à une entrée désinfectée

L’exemple suivant montre comment appliquer l’opérateur reduce à une entrée « nettoyée », dans laquelle les GUID de la colonne en cours de réduction sont remplacés avant de réduire :

Commencez par quelques enregistrements de la table Trace. Réduisez ensuite la colonne Texte qui inclut des GUID aléatoires. Comme les GUID aléatoires interfèrent avec l’opération de réduction, remplacez-les tous par la chaîne « GUID ». Effectuez maintenant l’opération de réduction. Dans le cas où il existe d’autres identificateurs « quasi aléatoires » avec des caractères incorporés « - » ou « _ », traitez les caractères comme des analyseurs non-termes.

Trace
| take 10000
| extend Text = replace(@"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", "GUID", Text)
| reduce by Text with characters="-_"

Remarque

L’implémentation de l’opérateur reduce est largement basée sur le document A Data Clustering Algorithm for Mining Patterns From Event Logs, par Risto Vaarandi.