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 IF THEN ELSE 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 . |
Contenu connexe
- En savoir plus sur l’émulation SQL Server dans Azure Data Explorer
- Utiliser sql pour Langage de requête Kusto aide-mémoire
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour