Partage via


Interroger les données à l’aide de T-SQL

L'éditeur de requêtes Azure Data Explorer prend en charge l’utilisation de T-SQL en plus de son langage de requête principal, le langage de requête Kusto (KQL). Alors que KQL est le langage de requête recommandé, T-SQL peut être utile pour les outils qui ne peuvent pas utiliser KQL.

Remarque

Seules les commandes DQL (Data Query Language) sont prises en charge. Pour plus d’informations, consultez Couverture.

Requête avec T-SQL

Pour exécuter une requête T-SQL, commencez la requête avec une ligne de commentaire T-SQL vide : --. La syntaxe -- indique à l’éditeur de requête d’interpréter la requête suivante comme T-SQL et non KQL.

Exemple

--
SELECT * FROM StormEvents

T-SQL en langage de requête Kusto

L’éditeur de requête prend en charge la possibilité de traduire des requêtes T-SQL en KQL. Cette fonctionnalité de traduction peut être utile pour les utilisateurs qui connaissent SQL et qui souhaitent en savoir plus sur KQL.

Pour obtenir l’équivalent KQL d’une instruction T-SQL SELECT, ajoutez le mot clé explain avant la requête. La sortie sera la version KQL de la requête, qui peut être utile pour comprendre la syntaxe et les concepts KQL correspondants.

N’oubliez pas de préfacer les requêtes T-SQL avec une ligne de commentaire T-SQL, --, pour indiquer à l’Éditeur de requête d’interpréter la requête suivante comme T-SQL et non KQL.

Exemple

--
explain
SELECT top(10) *
FROM StormEvents
ORDER BY DamageProperty DESC

Sortie

StormEvents
| project
    StartTime,
    EndTime,
    EpisodeId,
    EventId,
    State,
    EventType,
    InjuriesDirect,
    InjuriesIndirect,
    DeathsDirect,
    DeathsIndirect,
    DamageProperty,
    DamageCrops,
    Source,
    BeginLocation,
    EndLocation,
    BeginLat,
    BeginLon,
    EndLat,
    EndLon,
    EpisodeNarrative,
    EventNarrative,
    StormSummary
| sort by DamageProperty desc nulls first
| take int(10)

Exécuter des fonctions stockées

Lorsque vous utilisez T-SQL, nous vous recommandons de créer des requêtes KQL optimisées et de les encapsuler dans des fonctions stockées, car cela réduit le code T-SQL et peut augmenter les performances. Par exemple, si vous avez une fonction stockée comme décrit dans le tableau suivant, vous pouvez l’exécuter comme indiqué dans l’exemple de code.

Nom Paramètres Corps Dossier DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder Demo function with parameter
SELECT * FROM kusto.MyFunction(10)

Remarque

Pour faire la distinction entre les fonctions stockées et les procédures stockées système SQL émulées, exécutez les fonctions stockées avec une référence explicite au schéma kusto. Dans l’exemple, la fonction stockée est exécutée à l’aide de kusto.Myfunction.

Définir les propriétés de requête

Les propriétés de requête contrôlent la manière dont une requête s’exécute et retourne les résultats. Pour définir des propriétés de requête avec T-SQL, préfacez votre requête avec une ou plusieurs instructions dans la syntaxe suivante :

Syntaxe

DECLARE @__kql_set_requestPropertyName type = valeur;

Paramètres

Nom Type Requise Description
requestPropertyName string ✔️ Nom de la propriété de requête à définir.
type string ✔️ Type de données T-SQL de la valeur.
value scalaire ✔️ Valeur à assigner à la propriété de requête.

Remarque

  • Deux instructions doivent être séparées par un point-virgule, et aucune ligne ne doit être vide avant la requête.
  • Les propriétés de requête s’appliquent uniquement aux instructions d’expression tabulaire qui arrivent juste après.

Exemples

Le tableau suivant montre des exemples sur la façon de définir des propriétés de requête avec T-SQL.

Propriété de requête Exemple
query_datetimescope_to DECLARE @__kql_set_query_datetimescope_to DATETIME = '2023-03-31 03:02:01';
request_app_name DECLARE @__kql_set_request_app_name NVARCHAR = 'kuku';
query_results_cache_max_age DECLARE @__kql_set_query_results_cache_max_age TIME = '00:05:00';
truncationmaxsize DECLARE @__kql_set_truncationmaxsize BIGINT = 4294967297;
maxoutputcolumns DECLARE @__kql_set_maxoutputcolumns INT = 3001;
notruncation DECLARE @__kql_set_notruncation BIT = 1;
norequesttimeout DECLARE @__kql_set_norequesttimeout BIT = 0;

Pour définir des propriétés de requête avec KQL, consultez l’instruction set.

Couverture

Azure Data Explorer offre une prise en charge limitée de T-SQL. Le tableau suivant présente les instructions et fonctionnalités T-SQL qui ne sont pas prises en charge ou le sont partiellement.

Instruction ou fonctionnalité T-SQL Description
CREATE, INSERT, DROP et ALTER Non pris en charge
Modifications de schémas ou de données Non pris en charge
ANY, ALL et EXISTS Non pris en charge
WITHIN GROUP Non pris en charge
TOP PERCENT Non pris en charge
TOP WITH TIES Évaluée comme TOPclassique
TRUNCATE Retourne la valeur la plus proche
SELECT * L’ordre des colonnes peut ne pas être celui attendu. Utilisez des noms de colonne si l’ordre a une importance.
AT TIME ZONE Non pris en charge
Curseurs SQL Non pris en charge
Sous-requêtes corrélées Non pris en charge
CTE récursives Non pris en charge
Instructions dynamiques Non pris en charge
Instructions de contrôle de flux Seules les instructions IF THEN ELSE avec un schéma identique pour THEN et ELSE sont prises en charge.
Dupliquer les noms de colonnes Non pris en charge. Le nom d’origine est conservé pour une colonne.
les types de données ; Les données retournées peuvent être différentes du type de SQL Server. Par exemple, TINYINT et SMALLINT n’ont pas d’équivalent dans Azure Data Explorer et peuvent être retournées en tant que INT32 ou INT64 au lieu de BYTE ou INT16.