Eseguire query sui dati usando T-SQL

L'editor di query di Azure Esplora dati supporta l'uso di T-SQL oltre al relativo linguaggio di query primario, il linguaggio di query Kusto (KQL). Sebbene KQL sia il linguaggio di query consigliato, T-SQL può essere utile per gli strumenti che non possono 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

T-SQL da Linguaggio di query Kusto

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

Per ottenere l'equivalente KQL 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 prefazione delle 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 quanto ciò riduce al minimo il codice T-SQL e può aumentare 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 Corpo Cartella DocString
Myfunction (myLimit: long) {StormEvents | take myLimit} MyFolder Funzione demo con parametro
SELECT * FROM kusto.MyFunction(10)

Nota

Per distinguere le funzioni archiviate e le stored procedure del sistema SQL emulato, 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, prefazione della query con una o più istruzioni con la sintassi seguente:

Sintassi

DECLARE@__kql_set_valore del tipo=requestPropertyName;

Parametri

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

Nota

  • Due istruzioni devono essere separate da un punto e virgola e non deve essere presente alcuna riga vuota prima della query.
  • Le proprietà della richiesta si applicano solo alle istruzioni dell'espressione tabulare che seguono immediatamente.

Esempio

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

Request, proprietà Esempio
query_datetimescope_to DECLARE @__kql_set_query_datetimescope_to DATETIME = '2023-03-31 03:02:01';
request_app_name DICHIARA @__kql_set_request_app_name NVARCHAR = 'kuku';
query_results_cache_max_age DICHIARA @__kql_set_query_results_cache_max_age TIME = '00:05:00';
truncationmaxsize DICHIARAre @__kql_set_truncationmaxsize BIGINT = 4294967297;
maxoutputcolumns DICHIARA @__kql_set_maxoutputcolumns INT = 3001;
notruncation DICHIARAre @__kql_set_notruncation BIT = 1;
norequesttimeout DICHIARAre @__kql_set_norequesttimeout BIT = 0;

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

Copertura

Azure Esplora dati offre un supporto limitato per T-SQL. Nella tabella seguente vengono descritte le istruzioni T-SQL e le funzionalità 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 Valutata come regolare TOP
TRUNCATE Restituisce il valore più vicino
SELECT * L'ordine di colonna può essere diverso dalle aspettative. Usare i nomi di colonna 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 IFTHENELSE istruzioni con uno schema identico per THEN e.ELSE
Nomi di colonna duplicati Non supportato. Il nome originale viene mantenuto per una colonna.
Tipi di dati I dati restituiti possono differire dal tipo SQL Server. Ad esempio, TINYINT e SMALLINT non hanno equivalenti in Azure Esplora dati e possono restituire come INT32 o INT64INT16anziché BYTE .