Consulta de datos mediante T-SQL
El editor de consultas de Azure Data Explorer es compatible con el uso de T-SQL además de su lenguaje de consulta principal, el Lenguaje de consulta Kusto (KQL). Aunque KQL es el lenguaje de consulta recomendado, T-SQL puede ser útil para las herramientas que no pueden usar KQL.
Nota
Solo se admiten comandos del lenguaje de consulta de datos (DQL). Para obtener más información, consulte Cobertura.
Para ejecutar una consulta T-SQL, comience la consulta con una línea de comentario de T-SQL vacía: --
. La sintaxis --
indica al editor de consultas que interprete la siguiente consulta como T-SQL y no KQL.
--
SELECT * FROM StormEvents
El editor de consultas admite la capacidad de traducir consultas T-SQL a KQL. Esta característica de traducción puede ser útil para los usuarios que están familiarizados con SQL y quieren obtener más información sobre KQL.
Para obtener el KQL equivalente para una instrucción T-SQL SELECT
, agregue la palabra clave explain
antes de la consulta. La salida será la versión KQL de la consulta, que puede ser útil para comprender la sintaxis y los conceptos de KQL correspondientes.
Recuerde incluir en las consultas T-SQL una línea de comentario de T-SQL, --
, para indicar al editor de consultas que interprete la consulta siguiente como T-SQL y no como KQL.
--
explain
SELECT top(10) *
FROM StormEvents
ORDER BY DamageProperty DESC
Salida
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)
Al usar T-SQL, se recomienda crear consultas KQL optimizadas y encapsularlas en funciones almacenadas, ya que, al hacerlo, se minimiza el código T-SQL y puede aumentar el rendimiento. Por ejemplo, si tiene una función almacenada como se describe en la tabla siguiente, puede ejecutarla como se muestra en el ejemplo de código.
Nombre | Parámetros | Cuerpo | Carpeta | DocString |
---|---|---|---|---|
MyFunction | (myLimit: long) | {StormEvents | take myLimit} | MyFolder | Función de demostración con parámetro |
SELECT * FROM kusto.MyFunction(10)
Nota
Para distinguir entre funciones almacenadas y procedimientos almacenados emulados del sistema SQL, ejecute funciones almacenadas con una referencia explícita al esquema kusto
. En el ejemplo, la función almacenada se ejecuta mediante kusto.Myfunction
.
Las propiedades de solicitud controlan cómo se ejecuta una consulta y devuelve los resultados. Para establecer las propiedades de solicitud con T-SQL, incluya en la consulta una o varias instrucciones con la sintaxis siguiente:
DECLARE
@__kql_set_
requestPropertyName tipo =
valor;
Nombre | Type | Obligatorio | Descripción |
---|---|---|---|
requestPropertyName | string |
✔️ | Nombre de la propiedad de solicitud que se va a establecer. |
type | string |
✔️ | Tipo de datos T-SQL del valor. |
value | escalares | ✔️ | Valor que se va a asignar a la propiedad de solicitud. |
Nota
- Dos instrucciones deben estar separadas por punto y coma y no debe haber ninguna línea vacía antes de la consulta.
- Las propiedades de solicitud solo se aplican a las instrucciones de expresión tabular que siguen inmediatamente.
En la tabla siguiente se muestran ejemplos de cómo establecer propiedades de solicitud con T-SQL.
Propiedad de solicitud | Ejemplo |
---|---|
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; |
Para establecer las propiedades de solicitud con KQL, vea establecer instrucción.
Azure Data Explorer ofrece compatibilidad limitada con T-SQL. En la tabla siguiente se describen las instrucciones y características de T-SQL que no se admiten o que se admiten parcialmente.
Instrucción o característica de T-SQL | Descripción |
---|---|
CREATE , INSERT , DROP y ALTER . |
No compatible |
Modificaciones de esquema o datos | No compatible |
ANY , ALL y EXISTS |
No se admite |
WITHIN GROUP |
No compatible |
TOP PERCENT |
No compatible |
TOP WITH TIES |
Se evalúa como TOP normal |
TRUNCATE |
Devuelve el valor más cercano |
SELECT * |
El orden de las columnas puede diferir de la expectativa. Use nombres de columna si el orden importa. |
AT TIME ZONE |
No compatible |
Cursores SQL | No compatible |
Subconsultas correlacionadas | No compatible |
CTE recursivas | No compatible |
Instrucciones dinámicas | No compatible |
Instrucciones de control de flujo | Solo se admiten instrucciones IF THEN ELSE con un esquema idéntico para THEN y ELSE . |
Nombres de columna duplicados | No admitida. El nombre original se conserva para una columna. |
Tipos de datos | Los datos devueltos pueden diferir en el tipo de SQL Server. Por ejemplo, TINYINT y SMALLINT no tienen ningún equivalente en Azure Data Explorer y se pueden devolver como INT32 o INT64 en lugar de BYTE o INT16 . |
- Más información sobre la emulación de SQL Server en Azure Data Explorer
- Uso de la hoja de características clave del lenguaje de consulta SQL a Kusto