Consulta de datos mediante T-SQL

El editor de consultas de Azure Data Explorer admite el uso de T-SQL además de su lenguaje de consulta principal, 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, vea Cobertura.

Consulta con T-SQL

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.

Ejemplo

--
SELECT * FROM StormEvents

T-SQL a Lenguaje de consulta Kusto

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 anteponer las consultas T-SQL con una línea de comentario de T-SQL, --, para indicar al editor de consultas que interprete la consulta siguiente como T-SQL y no KQL.

Ejemplo

--
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)

Ejecución de funciones almacenadas

Al usar T-SQL, se recomienda crear consultas KQL optimizadas y encapsularlas en funciones almacenadas, ya que esto 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 demo con el 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 kusto esquema. En el ejemplo, la función almacenada se ejecuta mediante kusto.Myfunction.

Establecimiento de propiedades de solicitud

Las propiedades de solicitud controlan cómo se ejecuta una consulta y devuelve los resultados. Para establecer las propiedades de solicitud con T-SQL, antepone la consulta con una o varias instrucciones con la sintaxis siguiente:

Syntax

DECLARE@__kql_set_valor de tipo=requestPropertyName;

Parámetros

Nombre Tipo Requerido 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 escalar ✔️ Valor que se va a asignar a la propiedad de solicitud.

Nota

  • Dos instrucciones deben estar separadas por un 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.

Ejemplos

En la tabla siguiente se muestran ejemplos de cómo establecer propiedades de solicitud con T-SQL.

Request (propiedad) 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, consulte set statement( Instrucción set).

Cobertura

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 compatible
WITHIN GROUP No compatible
TOP PERCENT No compatible
TOP WITH TIES Se evalúa como normal TOP
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 es importante.
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 IFTHENELSE se admiten instrucciones con un esquema idéntico para THEN y ELSE .
Nombres de columna duplicados No compatible. 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 pueden devolver como INT32 o INT64 en lugar de BYTE o INT16.