Vue d'ensemble des commandes de gestion

Cet article décrit les commandes de gestion, également appelées commandes de contrôle, utilisées pour gérer Kusto. Les commandes de gestion sont des demandes adressées au service pour récupérer des informations qui ne sont pas nécessairement des données dans les tables de base de données, ou pour modifier l’état du service, etc.

Différenciation des commandes de gestion des requêtes

Kusto utilise trois mécanismes pour différencier les requêtes et les commandes de gestion : au niveau du langage, au niveau du protocole et au niveau de l’API. Cette différenciation est effectuée à des fins de sécurité.

Au niveau de la langue, le premier caractère du texte d’une requête détermine si la requête est une commande de gestion ou une requête. Les commandes de gestion doivent commencer par le caractère point (.), et aucune requête ne peut commencer par ce caractère.

Au niveau du protocole, des points de terminaison HTTP/HTTPs différents sont utilisés pour les commandes de contrôle par rapport aux requêtes.

Au niveau de l’API, différentes fonctions sont utilisées pour envoyer des commandes de gestion par opposition aux requêtes.

Combinaison de requêtes et de commandes de gestion

Les commandes de gestion peuvent référencer des requêtes (mais pas inversement) ou d’autres commandes de gestion. Il existe plusieurs scénarios pris en charge :

  • AdminThenQuery : une commande de gestion est exécutée et son résultat (représenté sous la forme d’une table de données temporaire) sert d’entrée à une requête.
  • AdminFromQuery : une requête ou une .show commande d’administration est exécutée et son résultat (représenté sous la forme d’une table de données temporaire) sert d’entrée à une commande de gestion.

Notez que dans tous les cas, l’ensemble de la combinaison est techniquement une commande de gestion, et non une requête. Le texte de la demande doit donc commencer par un point (.) et la demande doit être envoyée au point de terminaison de gestion du service.

Notez également que des instructions de requête apparaissent dans la partie requête du texte (elles ne peuvent pas précéder la commande elle-même).

Notes

Nous vous recommandons de limiter l’utilisation des opérations AdminThenQuery .

AdminThenQuery est indiqué de l’une des deux manières suivantes :

  • En utilisant un caractère de canal (|), la requête traite donc les résultats de la commande de gestion comme s’il s’agissait d’un autre opérateur de requête produisant des données.
  • En utilisant un point-virgule (;), qui introduit ensuite les résultats de la commande de gestion dans un symbole spécial appelé $command_results, que l’on peut ensuite utiliser dans la requête un nombre quelconque de fois.

Par exemple :

// 1. Using pipe: Count how many tables are in the database-in-scope:
.show tables
| count

// 2. Using semicolon: Count how many tables are in the database-in-scope:
.show tables;
$command_results
| count

// 3. Using semicolon, and including a let statement:
.show tables;
let useless=(n:string){strcat(n,'-','useless')};
$command_results | extend LastColumn=useless(TableName)

AdminFromQuery est indiqué par la combinaison de caractères <|. Par exemple, dans le code suivant, nous exécutons d’abord une requête qui produit une table contenant une seule colonne (nommée str de type string) et une seule ligne, puis nous l’écrivons en tant que nom de table MyTable dans la base de données en contexte :

.set MyTable <|
let text="Hello, World!";
print str=text