Vue d’ensemble du Langage de requête Kusto (KQL)

Le langage de requête Kusto (KQL) est un outil permettant d’explorer vos données et d’y découvrir des modèles, d’identifier des anomalies et des valeurs hors norme, de créer une modélisation statistique, etc. KQL est un langage simple mais puissant pour interroger des données structurées, semi-structurées et non structurées. Le langage est expressif, facile à lire et à comprendre l’intention de la requête et optimisé pour les expériences de création. Langage de requête Kusto est optimal pour interroger les données de télémétrie, les métriques et les journaux avec une prise en charge approfondie de la recherche et de l’analyse de texte, des opérateurs et fonctions de série chronologique, de l’analytique et de l’agrégation, des recherches géospatiales, des recherches de similarité vectorielle et de nombreuses autres constructions de langage qui fournissent le langage le plus optimal pour l’analyse des données. La requête utilise des entités de schéma organisées dans une hiérarchie similaire aux SQL : bases de données, tables et colonnes.

Cet article fournit une explication du langage de requête et propose des exercices pratiques pour vous aider à commencer à écrire des requêtes. Pour accéder à l’environnement de requête, utilisez l’interface utilisateur web Azure Data Explorer. Pour savoir comment utiliser KQL, consultez Tutoriel : Apprendre les opérateurs courants.

Qu’est-ce qu’une requête Kusto ?

Une requête Kusto est une requête en lecture seule de traitement de données et de retour de résultats. La demande est formulée en texte brut en utilisant un modèle de flux de données facile à lire, à créer et à automatiser. Les requêtes Kusto sont constituées d’une ou plusieurs instructions de requête.

Qu’est-ce qu’une instruction de requête ?

Il existe trois types d’instructions de requête utilisateur :

Toutes les instructions de requête sont séparées par un ; (point-virgule) et affectent uniquement la requête à portée de main.

Notes

Pour plus d’informations sur les instructions de requête d’application, consultez Instructions de requête d’application.

Le type le plus courant d’instruction de requête est une instruction d’expression tabulaire, ce qui signifie que son entrée et sa sortie sont des tables ou des jeux de données tabulaires. Les instructions tabulaires peuvent contenir des opérateurs, chacun d’entre eux commençant par une entrée tabulaire et retournant une sortie tabulaire. Les opérateurs sont séquencés par une barre verticale (|). Les données circulent, ou sont canalisées, d’un opérateur au suivant. Les données sont filtrées ou manipulées à chaque étape, puis elles alimentent l’étape suivante.

C’est comme un entonnoir, qui commence avec une table de données entière. Chaque fois que les données passent par un autre opérateur, elles sont filtrées, réorganisées ou synthétisées. Étant donné que la canalisation d’informations d’un opérateur à un autre est séquentielle, l’ordre de l’opérateur de requête est important et peut affecter à la fois les résultats et les performances. À la fin de l’entonnoir, il vous reste une sortie affinée.

Prenons un exemple de requête.

StormEvents 
| where StartTime between (datetime(2007-11-01) .. datetime(2007-12-01))
| where State == "FLORIDA"  
| count 
Nombre
28

Notes

KQL respecte la casse pour tout ce qui concerne les noms de tables, les noms de colonnes de table, les opérateurs, les fonctions, etc.

Cette requête comporte une seule instruction d’expression tabulaire. L’instruction commence par une référence à une table nommée StormEvents et contient plusieurs opérateurs, where et count, chacun étant séparé par une barre verticale. Les lignes de données de la table source sont filtrées par la valeur de la colonne StartTime, puis filtrées par la valeur de la colonne State. Sur la dernière ligne, la requête retourne une table avec une seule colonne et une seule ligne contenant le nombre de lignes restantes.

Pour essayer d’autres requêtes Kusto, consultez Tutoriel : Écrire des requêtes Kusto.

Commandes de gestion

Contrairement aux requêtes Kusto, les commandes de gestion sont des demandes adressées à Kusto pour traiter ou modifier des données ou des métadonnées. Par exemple, la commande de gestion suivante crée une table Kusto avec deux colonnes et LevelText:

.create table Logs (Level:string, Text:string)

Les commandes de gestion ont leur propre syntaxe, qui ne fait pas partie de la syntaxe Langage de requête Kusto, bien que les deux partagent de nombreux concepts. En particulier, les commandes de gestion sont distinguées des requêtes en faisant en sorte que le premier caractère dans le texte de la commande soit le caractère point (.) (qui ne peut pas démarrer une requête). Cette distinction empêche de nombreux types d’attaques de sécurité, simplement parce qu’elle empêche l’incorporation de commandes de gestion dans des requêtes.

Toutes les commandes de gestion ne modifient pas les données ou les métadonnées. Les nombreuses commandes commençant par .show sont utilisées pour afficher des métadonnées ou des données. Par exemple, la commande .show tables retourne la liste de toutes les tables de la base de données active.

Pour plus d’informations sur les commandes de gestion, consultez Vue d’ensemble des commandes de gestion.

KQL dans d’autres services

KQL est utilisé par de nombreux autres services Microsoft. Pour obtenir des informations spécifiques sur l’utilisation de KQL dans ces environnements, reportez-vous aux liens suivants :