Tutoriel : Apprendre les opérateurs courants

Langage de requête Kusto (KQL) est utilisé pour écrire des requêtes dans Azure Data Explorer, Azure Monitor Log Analytics, Azure Sentinel, etc. Ce tutoriel est une introduction aux opérateurs KQL essentiels utilisés pour accéder à vos données et les analyser.

Pour obtenir des conseils plus spécifiques sur la façon d’interroger les journaux dans Azure Monitor, consultez Prise en main des requêtes de journal.

Notes

Vous ne trouvez pas ce que vous recherchez ? Cet article a récemment été fractionné, comme suit :

Ce didacticiel vous montre comment effectuer les opérations suivantes :

Les exemples de ce didacticiel utilisent la StormEvents table, qui est disponible publiquement dans le cluster d’aide. Pour explorer avec vos propres données, créez votre propre cluster gratuit.

Prérequis

  • Un compte Microsoft ou Microsoft Entra identité d’utilisateur pour se connecter au cluster d’aide

Compter les lignes

Commencez par utiliser l’opérateur count pour rechercher le nombre d’enregistrements storm dans la StormEvents table.

StormEvents 
| count

Sortie

Count
59066

Voir un exemple de données

Pour avoir une idée des données, utilisez l’opérateur take pour afficher un exemple d’enregistrements. Cet opérateur retourne un nombre spécifié de lignes arbitraires de la table, ce qui peut être utile pour afficher un aperçu de la structure et du contenu des données généraux.

StormEvents 
| take 5

Le tableau suivant n’affiche que 6 des 22 colonnes retournées. Pour voir la sortie complète, exécutez la requête.

StartTime EndTime EpisodeId EventId État Type d’événement ...
2007-09-20T21 :57 :00Z 2007-09-20T22 :05 :00Z 11078 60913 FLORIDE Tornade ...
2007-12-20T07 :50 :00Z 2007-12-20T07 :53 :00Z 12554 68796 MISSISSIPPI Vent d’orage ...
2007-12-30T16 :00 :00Z 2007-12-30T16 :05 :00Z 11749 64588 GEORGIE Vent d’orage ...
2007-09-29T08 :11 :00Z 2007-09-29T08 :11 :00Z 11091 61032 ATLANTIQUE SUD Trombe marine ...
2007-09-18T20 :00 :00Z 2007-09-19T18 :00 :00Z 11074 60904 FLORIDE Fortes précipitations ...

Sélectionner un sous-ensemble de colonnes

Utilisez l’opérateur de projet pour simplifier l’affichage et sélectionner un sous-ensemble spécifique de colonnes. L’utilisation project est souvent plus efficace et plus facile à lire que l’affichage de toutes les colonnes.

StormEvents
| take 5
| project State, EventType, DamageProperty

Sortie

State Type d’événement DamageProperty
ATLANTIQUE SUD Trombe marine 0
FLORIDE Fortes précipitations 0
FLORIDE Tornade 6200000
GEORGIE Vent d’orage 2000
MISSISSIPPI Vent d’orage 20000

Répertorier les valeurs uniques

Il semble qu’il existe plusieurs types de tempêtes en fonction des résultats de la requête précédente. Utilisez l’opérateur distinct pour répertorier tous les types de tempête uniques.

StormEvents 
| distinct EventType

Il existe 46 types de tempêtes dans le tableau. Voici un exemple de 10 d’entre eux.

Type d’événement
Vent d’orage
Grêle
Crue soudaine
Sécheresse
Météo hivernale
Tempête hivernale
Neige lourde
Vent fort
Gel/gel
Crue
...

Filtrer par condition

L’opérateur where filtre les lignes de données en fonction de certains critères.

La requête suivante recherche les événements storm dans un spécifique State d’un spécifique EventType.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| project StartTime, EndTime, State, EventType, DamageProperty

146 événements correspondent à ces conditions. Voici un exemple de 5 d’entre eux.

StartTime EndTime État Type d’événement DamageProperty
2007-01-13T08 :45 :00Z 2007-01-13T10 :30 :00Z TEXAS Crue 0
2007-01-13T09 :30 :00Z 2007-01-13T21 :00 :00Z TEXAS Crue 0
2007-01-13T09 :30 :00Z 2007-01-13T21 :00 :00Z TEXAS Crue 0
2007-01-15T22 :00 :00Z 2007-01-16T22 :00 :00Z TEXAS Crue 20000
2007-03-12T02 :30 :00Z 2007-03-12T06 :45 :00Z TEXAS Crue 0
... ... ... ... ...

Trier les résultats

Pour afficher les inondations les plus graves au Texas qui ont causé le plus de dégâts, utilisez l’opérateur de tri pour organiser les lignes dans l’ordre décroissant en fonction de la DamageProperty colonne. L’ordre de tri par défaut est décroissant. Pour trier dans l’ordre croissant, spécifiez asc.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| sort by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty

Sortie

StartTime EndTime État Type d’événement DamageProperty
2007-08-18T21 :30 :00Z 2007-08-19T23 :00 :00Z TEXAS Crue 5000000
2007-06-27T00 :00 :00Z 2007-06-27T12 :00 :00Z TEXAS Crue 1200000
2007-06-28T18 :00 :00Z 2007-06-28T23 :00 :00Z TEXAS Crue 1000000
2007-06-27T00 :00 :00Z 2007-06-27T08 :00 :00Z TEXAS Crue 750000
2007-06-26T20 :00 :00Z 2007-06-26T23 :00 :00Z TEXAS Crue 750000
... ... ... ... ...

Obtenir les n lignes du haut

L’opérateur supérieur retourne les n premières lignes triées par la colonne spécifiée.

La requête suivante retourne les cinq inondations du Texas qui ont causé le plus de dommages à la propriété.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty

Sortie

StartTime EndTime État Type d’événement DamageProperty
2007-08-18T21 :30 :00Z 2007-08-19T23 :00 :00Z TEXAS Crue 5000000
2007-06-27T00 :00 :00Z 2007-06-27T12 :00 :00Z TEXAS Crue 1200000
2007-06-28T18 :00 :00Z 2007-06-28T23 :00 :00Z TEXAS Crue 1000000
2007-06-27T00 :00 :00Z 2007-06-27T08 :00 :00Z TEXAS Crue 750000
2007-06-26T20 :00 :00Z 2007-06-26T23 :00 :00Z TEXAS Crue 750000

Notes

L’ordre des opérateurs est important. Si vous mettez top avant where ici, vous obtiendrez des résultats différents. Cela est dû au fait que les données sont transformées par chaque opérateur dans l’ordre. Pour plus d’informations, consultez instructions d’expression tabulaire.

Créer des colonnes calculées

Les opérateurs de projet et d’extension peuvent créer des colonnes calculées.

Utilisez project pour spécifier uniquement les colonnes que vous souhaitez afficher et pour extend ajouter la colonne calculée à la fin de la table.

La requête suivante crée une colonne calculée Duration avec la différence entre et StartTimeEndTime. Étant donné que nous ne voulons afficher que quelques colonnes sélectionnées, l’utilisation project est le meilleur choix dans ce cas.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| project StartTime, EndTime, Duration = EndTime - StartTime, DamageProperty

Sortie

StartTime EndTime Duration DamageProperty
2007-08-18T21 :30 :00Z 2007-08-19T23 :00 :00Z 1.01:30:00 5000000
2007-06-27T00 :00 :00Z 2007-06-27T12 :00 :00Z 12:00:00 1200000
2007-06-28T18 :00 :00Z 2007-06-28T23 :00 :00Z 05:00:00 1000000
2007-06-27T00 :00 :00Z 2007-06-27T08 :00 :00Z 08:00:00 750000
2007-06-26T20 :00 :00Z 2007-06-26T23 :00 :00Z 03:00:00 750000

Si vous examinez la colonne calculée Duration , vous remarquerez peut-être que l’inondation qui a causé le plus de dégâts a également été la plus longue.

Utilisez extend pour afficher la colonne calculée Duration avec toutes les autres colonnes. La Duration colonne est ajoutée en tant que dernière colonne.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| extend Duration = EndTime - StartTime

Sortie

StartTime EndTime ... Duration
2007-08-18T21 :30 :00Z 2007-08-19T23 :00 :00Z ... 1.01:30:00
2007-06-27T00 :00 :00Z 2007-06-27T12 :00 :00Z ... 12:00:00
2007-06-28T18 :00 :00Z 2007-06-28T23 :00 :00Z ... 05:00:00
2007-06-27T00 :00 :00Z 2007-06-27T08 :00 :00Z ... 08:00:00
2007-06-26T20 :00 :00Z 2007-06-26T23 :00 :00Z ... 03:00:00

Mapper des valeurs d’un jeu à un autre

Le mappage statique est une technique utile pour modifier la présentation de vos résultats. Dans KQL, une façon d’effectuer un mappage statique consiste à utiliser un dictionnaire dynamique et des accesseurs pour mapper des valeurs d’un jeu à un autre.

let sourceMapping = dynamic(
  {
    "Emergency Manager" : "Public",
    "Utility Company" : "Private"
  });
StormEvents
| where Source == "Emergency Manager" or Source == "Utility Company"
| project EventId, Source, FriendlyName = sourceMapping[Source]

Sortie

EventId Source FriendlyName
68796 Gestionnaire des urgences Public
... ... ...
72609 Société d’utilitaires Privées
... ... ...

Étape suivante

Maintenant que vous êtes familiarisé avec les bases de l’écriture de requêtes Kusto, passez au tutoriel suivant et découvrez comment utiliser les fonctions d’agrégation pour obtenir des informations plus approfondies sur vos données.