Eseguire query sui dati con T-SQL

L'editor di query di Azure Esplora dati supporta l'uso di T-SQL oltre al linguaggio di query primario, il linguaggio di query Kusto (KQL). Anche se KQL è il linguaggio di query consigliato, T-SQL può essere utile per gli strumenti che non sono in grado di usare KQL.

Nota

Sono supportati solo i comandi DQL (Data Query Language). Per altre informazioni, vedere Copertura.

Eseguire query con T-SQL

Per eseguire una query T-SQL, iniziare la query con una riga di commento T-SQL vuota: --. La -- sintassi indica all'editor di query di interpretare la query seguente come T-SQL e non KQL.

Esempio

--
SELECT * FROM StormEvents

Da T-SQL a Linguaggio di query Kusto

L'editor di query supporta la possibilità di convertire query T-SQL in KQL. Questa funzionalità di traduzione può essere utile per gli utenti che hanno familiarità con SQL e vogliono ottenere altre informazioni su KQL.

Per ottenere la chiave KQL equivalente per un'istruzione T-SQL SELECT , aggiungere la parola chiave explain prima della query. L'output sarà la versione KQL della query, che può essere utile per comprendere la sintassi e i concetti KQL corrispondenti.

Ricordarsi di anteporre le query T-SQL con una riga di commento T-SQL, --, per indicare all'editor di query di interpretare la query seguente come T-SQL e non KQL.

Esempio

--
explain
SELECT top(10) *
FROM StormEvents
ORDER BY DamageProperty DESC

Output

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)

Eseguire funzioni archiviate

Quando si usa T-SQL, è consigliabile creare query KQL ottimizzate e incapsularle nelle funzioni archiviate, in modo da ridurre al minimo il codice T-SQL e migliorare le prestazioni. Ad esempio, se si dispone di una funzione archiviata come descritto nella tabella seguente, è possibile eseguirla come illustrato nell'esempio di codice.

Nome Parametri Testo Cartella DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder Funzione demo con parametro
SELECT * FROM kusto.MyFunction(10)

Nota

Per distinguere tra le funzioni archiviate e le stored procedure di sistema SQL emulate, eseguire funzioni archiviate con un riferimento esplicito allo kusto schema. Nell'esempio la funzione archiviata viene eseguita usando kusto.Myfunction.

Impostare le proprietà della richiesta

Le proprietà della richiesta controllano il modo in cui una query viene eseguita e restituisce i risultati. Per impostare le proprietà della richiesta con T-SQL, anteporre alla query una o più istruzioni con la sintassi seguente:

Sintassi

DECLARE@__kql_set_valore del tipo = requestPropertyName ;

Parametri

Nome Digita Obbligatorio Descrizione
requestPropertyName string ✔️ Nome della proprietà della richiesta da impostare.
type string ✔️ Tipo di dati T-SQL del valore.
value scalare ✔️ Valore da assegnare alla proprietà della richiesta.

Nota

  • Due istruzioni devono essere separate da un punto e virgola e non devono essere presenti righe vuote prima della query.
  • Le proprietà della richiesta si applicano solo alle istruzioni di espressione tabulare che seguono immediatamente.

Esempi

La tabella seguente illustra esempi di come impostare le proprietà della richiesta con T-SQL.

Proprietà request Esempio
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;

Per impostare le proprietà della richiesta con KQL, vedere l'istruzione set.

Copertura

Azure Esplora dati offre supporto limitato per T-SQL. La tabella seguente descrive le istruzioni E le funzionalità T-SQL non supportate o parzialmente supportate.

Istruzione o funzionalità T-SQL Descrizione
CREATE, INSERT, DROP e ALTER Non supportato
Modifiche dello schema o dei dati Non supportato
ANY, ALL e EXISTS Non supportato
WITHIN GROUP Non supportato
TOP PERCENT Non supportato
TOP WITH TIES Valutato come regolare TOP
TRUNCATE Restituisce il valore più vicino
SELECT * L'ordine delle colonne può differire dalle aspettative. Usare i nomi delle colonne se l'ordine è importante.
AT TIME ZONE Non supportato
Cursori SQL Non supportato
Sottoquery correlate Non supportato
CTE ricorsive Non supportato
Istruzioni dinamiche Non supportato
Istruzioni di controllo del flusso Sono supportate solo IF THEN ELSE le istruzioni con uno schema identico per THEN e .ELSE
Nomi di colonna duplicati Non supportato. Il nome originale viene mantenuto per una colonna.
Tipo di dati I dati restituiti possono variare in base al tipo di SQL Server. Ad esempio, TINYINT e SMALLINT non hanno equivalenti in Azure Esplora dati e possono restituire come INT32 o INT64 anziché BYTE .INT16