Query's uitvoeren op gegevens met behulp van T-SQL

De Azure Data Explorer-queryeditor ondersteunt het gebruik van T-SQL naast de primaire querytaal Kusto-querytaal (KQL). Hoewel KQL de aanbevolen querytaal is, kan T-SQL handig zijn voor hulpprogramma's die KQL niet kunnen gebruiken.

Notitie

Alleen DQL-opdrachten (Data Query Language) worden ondersteund. Zie Dekking voor meer informatie.

Query's uitvoeren met T-SQL

Als u een T-SQL-query wilt uitvoeren, begint u de query met een lege T-SQL-opmerkingsregel: --. De -- syntaxis laat de queryeditor de volgende query interpreteren als T-SQL en niet als KQL.

Voorbeeld

--
SELECT * FROM StormEvents

T-SQL naar Kusto-querytaal

De queryeditor ondersteunt de mogelijkheid om T-SQL-query's te vertalen naar KQL. Deze vertaalfunctie kan handig zijn voor gebruikers die bekend zijn met SQL en meer willen weten over KQL.

Als u de equivalente KQL voor een T-SQL-instructie SELECT wilt ophalen, voegt u het trefwoord explain toe vóór de query. De uitvoer is de KQL-versie van de query, wat handig kan zijn voor het begrijpen van de bijbehorende KQL-syntaxis en -concepten.

Vergeet niet om T-SQL-query's vooraf te laten gaan met een T-SQL-opmerkingsregel, --, om de queryeditor te laten weten dat de volgende query moet worden geïnterpreteerd als T-SQL en niet als KQL.

Voorbeeld

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

Uitvoer

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)

Opgeslagen functies uitvoeren

Wanneer u T-SQL gebruikt, raden we u aan om geoptimaliseerde KQL-query's te maken en deze in te kapselen in opgeslagen functies, omdat dit de T-SQL-code minimaliseert en de prestaties kan verbeteren. Als u bijvoorbeeld een opgeslagen functie hebt zoals beschreven in de volgende tabel, kunt u deze uitvoeren zoals wordt weergegeven in het codevoorbeeld.

Name Parameters Hoofdtekst Map DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder Demo-functie met parameter
SELECT * FROM kusto.MyFunction(10)

Notitie

Als u onderscheid wilt maken tussen opgeslagen functies en opgeslagen procedures van het SQL-systeem, voert u opgeslagen functies uit met een expliciete verwijzing naar het kusto schema. In het voorbeeld wordt de opgeslagen functie uitgevoerd met behulp van kusto.Myfunction.

Aanvraageigenschappen instellen

Aanvraageigenschappen bepalen hoe een query wordt uitgevoerd en resultaten retourneert. Als u aanvraageigenschappen wilt instellen met T-SQL, geeft u de query een of meer instructies met de volgende syntaxis:

Syntax

DECLARE@__kql_set_waarde van het type=requestPropertyName;

Parameters

Naam Type Vereist Beschrijving
requestPropertyName string ✔️ De naam van de aanvraageigenschap die moet worden ingesteld.
type string ✔️ Het T-SQL-gegevenstype van de waarde.
value Scalaire ✔️ De waarde die moet worden toegewezen aan de aanvraageigenschap.

Notitie

  • Twee instructies moeten worden gescheiden door een puntkomma en er mag geen lege regel vóór de query staan.
  • Aanvraageigenschappen zijn alleen van toepassing op de instructies voor tabellaire expressies die onmiddellijk volgen.

Voorbeelden

In de volgende tabel ziet u voorbeelden voor het instellen van aanvraageigenschappen met T-SQL.

Aanvraageigenschap Voorbeeld
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 DECLAREer @__kql_set_notruncation BIT = 1;
norequesttimeout DECLAREer @__kql_set_norequesttimeout BIT = 0;

Zie set-instructie om aanvraageigenschappen in te stellen met KQL.

Dekking

Azure Data Explorer biedt beperkte ondersteuning voor T-SQL. De volgende tabel bevat een overzicht van de T-SQL-instructies en -functies die niet of gedeeltelijk worden ondersteund.

T-SQL-instructie of -functie Description
CREATE, INSERT, DROP en ALTER Niet ondersteund
Schema- of gegevenswijzigingen Niet ondersteund
ANY, ALLen EXISTS Niet ondersteund
WITHIN GROUP Niet ondersteund
TOP PERCENT Niet ondersteund
TOP WITH TIES Geëvalueerd als normaal TOP
TRUNCATE geeft als resultaat de dichtstbijzijnde waarde
SELECT * De kolomvolgorde kan afwijken van de verwachting. Gebruik kolomnamen als de volgorde van belang is.
AT TIME ZONE Niet ondersteund
SQL-cursors Niet ondersteund
Gecorreleerde subquery's Niet ondersteund
Recursieve CTE's Niet ondersteund
Dynamische instructies Niet ondersteund
Instructies voor stroombeheer Alleen IFTHENELSE instructies met een identiek schema voor THEN en ELSE worden ondersteund.
Dubbele kolomnamen Wordt niet ondersteund. De oorspronkelijke naam blijft behouden voor één kolom.
Gegevenstypen Geretourneerde gegevens kunnen qua type afwijken van SQL Server. En hebben bijvoorbeeld TINYINTSMALLINT geen equivalent in Azure Data Explorer en kunnen worden geretourneerd als INT32 of INT64 in plaats van BYTE of INT16.