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

L’éditeur de requête 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.

Notes

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 par 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 comme KQL.

Exemple

--
SELECT * FROM StormEvents

T-SQL à 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 souhaitent en savoir plus sur KQL.

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

N’oubliez pas de faire précéder les requêtes T-SQL d’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 comme 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 Fonction de démonstration avec le paramètre
SELECT * FROM kusto.MyFunction(10)

Notes

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

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

Les propriétés de requête contrôlent la façon 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, faites précéder votre requête d’une ou de plusieurs instructions avec la syntaxe suivante :

Syntax

DECLARE@__kql_set_Valeur de type=requestPropertyName;

Paramètres

Nom Type Obligatoire 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 à affecter à la propriété de requête.

Notes

  • Deux instructions doivent être séparées par un point-virgule, et il ne doit y avoir aucune ligne vide avant la requête.
  • Les propriétés de requête s’appliquent uniquement aux instructions d’expression tabulaire qui suivent immédiatement.

Exemples

Le tableau suivant montre des exemples pour définir des propriétés de requête avec T-SQL.

Propriété Request 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 instruction set.

Couverture

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

Instruction ou fonctionnalité T-SQL Description
CREATE, INSERT, DROP et ALTER Non prise en charge
Modifications de schéma ou de données Non prise en charge
ANY, ALL et EXISTS Non prise en charge
WITHIN GROUP Non prise en charge
TOP PERCENT Non prise en charge
TOP WITH TIES Évalué comme étant normal TOP
TRUNCATE Retourne la valeur la plus proche
SELECT * L’ordre des colonnes peut différer de l’attente. Utilisez des noms de colonnes si l’ordre est important.
AT TIME ZONE Non prise en charge
Curseurs SQL Non prise en charge
Sous-requêtes corrélées Non prise en charge
CTE récursives Non prise en charge
Instructions dynamiques Non prise en charge
Instructions de contrôle de flux Seules les IFTHENELSE instructions 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.
Types de données Le type des données retournées peut différer de SQL Server. Par exemple, TINYINT et SMALLINT n’ont pas d’équivalent dans Azure Data Explorer, et peuvent retourner en tant que INT32 ou INT64 au lieu de BYTE ou INT16.