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 TOP classique |
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 . |
Contenu connexe
- Découvrir l’émulation SQL Server dans Azure Data Explorer
- Utiliser l’Aide-mémoire sur la conversion de SQL en langage de requête Kusto