Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Frågeacceleration stöder ett ANSI SQL-liknande språk för att uttrycka frågor över blobinnehåll. SQL-dialekten för frågeacceleration är en delmängd av ANSI SQL, med en begränsad uppsättning datatyper som stöds, operatorer osv., men den utökar även ANSI SQL för att stödja frågor över hierarkiska halvstrukturerade dataformat som JSON.
Syntax för SELECT
Den enda SQL-instruktion som stöds av frågeacceleration är SELECT-instruktionen. Det här exemplet returnerar varje rad som uttrycket returnerar sant för.
SELECT * FROM table [WHERE expression] [LIMIT limit]
För CSV-formaterade data måste tabellen vara BlobStorage. Det innebär att frågan körs mot den blob som angavs i REST-anropet. För JSON-formaterade data är tabellen en "tabellbeskrivning". Se avsnittet Tabellbeskrivningar i den här artikeln.
I följande exempel, för varje rad där WHERE-uttrycket returnerar sant, returnerar den här instruktionen en ny rad som görs från utvärdering av vart och ett av projektionsuttrycken.
SELECT expression [, expression ...] FROM table [WHERE expression] [LIMIT limit]
Du kan ange en eller flera specifika kolumner som en del av SELECT-uttrycket (till exempel SELECT Title, Author, ISBN).
Anmärkning
Det maximala antalet specifika kolumner som du kan använda i SELECT-uttrycket är 49. Om du behöver select-instruktionen för att returnera fler än 49 kolumner använder du ett jokertecken (*) för SELECT-uttrycket (till exempel: SELECT *).
I följande exempel returneras en aggregerad beräkning (till exempel medelvärdet för en viss kolumn) över var och en av de rader som uttrycket returnerar sant för.
SELECT aggregate_expression FROM table [WHERE expression] [LIMIT limit]
I följande exempel returneras lämpliga offsets för delning av en CSV-formaterad blob. Se avsnittet Sys.Split i den här artikeln.
SELECT sys.split(split_size)FROM BlobStorage
Datatyper
| Datatyp | Beskrivning |
|---|---|
| INT | 64-bit signerat heltal. |
| FLYT | 64-bitars flyttalsnummer ("dubbelprecision"). |
| sträng | Unicode-sträng med variabel längd. |
| TIDSSTÄMPEL | En tidpunkt. |
| BOOLESK | Sant eller falskt. |
När du läser värden från CSV-formaterade data läss alla värden som strängar. Strängvärden kan konverteras till andra typer med cast-uttryck. Värden kan implicit omvandlas till andra typer beroende på kontext. Mer information finns i Prioritet för datatyp (Transact-SQL).
Uttryck
Refererar till fält
För JSON-formaterade data eller CSV-formaterade data med en rubrikrad kan fält refereras efter namn. Fältnamn kan citeras eller inte. Angivna fältnamn omges av tecken med dubbla citattecken ("), kan innehålla blanksteg och är skiftlägeskänsliga. Namn på ociterade fält är skiftlägeskänsliga och får inte innehålla några specialtecken.
I CSV-formaterade data kan fält också refereras till med ordningstal, med ett prefix av ett understreckstecken (_). Det första fältet kan till exempel refereras till som _1, eller så kan det elfte fältet refereras till som _11. Att referera till fält efter ordning är användbart för CSV-formaterade data som inte innehåller en rubrikrad, i vilket fall det enda sättet att referera till ett visst fält är med ordningstal.
Operatörer
Följande SQL-standardoperatorer stöds:
| Operatör | Beskrivning |
|---|---|
= |
Jämför likheten mellan två uttryck (en jämförelseoperator). |
!= |
Testar om ett uttryck inte är lika med ett annat uttryck (en jämförelseoperator). |
<> |
Jämför två uttryck för inte lika med (en jämförelseoperator). |
< |
Jämför två uttryck för mindre än (en jämförelseoperator). |
<= |
Jämför två uttryck för mindre än eller lika med (en jämförelseoperator). |
> |
Jämför två uttryck som är större än (en jämförelseoperator). |
>= |
Jämför två uttryck för större än eller lika med (en jämförelseoperator). |
+ |
Lägger till två tal. Den här tilläggsaritmetiska operatorn kan också lägga till ett tal, i dagar, till ett datum. |
- |
Subtraherar två tal (en aritmisk subtraktionsoperator). |
/ |
Dividerar ett tal med ett annat (en aritmetikdivisionsoperator). |
* |
Multiplicerar två uttryck (en aritmetisk multiplikationsoperator). |
% |
Returnerar resten av ett tal dividerat med ett annat. |
AND |
Utför en bitvis logisk AND-åtgärd mellan två heltalsvärden. |
OR |
Utför en bitvis logisk OR-åtgärd mellan två angivna heltalsvärden som översätts till binära uttryck i Transact-SQL-uttryck. |
NOT |
Negerar booleska indata. |
CAST |
Konverterar ett uttryck av en datatyp till en annan. |
BETWEEN |
Anger ett intervall som ska testas. |
IN |
Avgör om ett angivet värde matchar något värde i en underfråga eller en lista. |
NULLIF |
Returnerar ett null-värde om de två angivna uttrycken är lika med. |
COALESCE |
Utvärderar argumenten i ordning och returnerar det aktuella värdet för det första uttrycket som ursprungligen inte utvärderas till NULL. |
Om datatyperna till vänster och höger om en operator är olika utförs automatisk konvertering enligt de regler som anges här: Datatypprioritet (Transact-SQL).
SQL-språket för frågeacceleration stöder endast en mycket liten delmängd av de datatyper som beskrivs i den artikeln. Se avsnittet Datatyper i den här artikeln.
Kastar
SQL-språket för frågeacceleration stöder CAST-operatorn enligt reglerna här: Datatypkonvertering (databasmotor).
SQL-språket för frågeacceleration stöder endast en liten delmängd av de datatyper som beskrivs i den artikeln. Se avsnittet Datatyper i den här artikeln.
Strängfunktioner
SQL-språket för frågeacceleration stöder följande SQL-standardsträngfunktioner:
| Funktion | Beskrivning |
|---|---|
| CHAR_LENGTH | Returnerar längden i tecken i stränguttrycket, om stränguttrycket är av en teckendatatyp. annars returnerar längden i byte för stränguttrycket (det minsta heltalet inte mindre än antalet bitar dividerat med 8). (Den här funktionen är samma som funktionen CHARACTER_LENGTH.) |
| TECKENLÄNGD | Returnerar längden i tecken i stränguttrycket, om stränguttrycket är av en teckendatatyp. annars returnerar längden i byte för stränguttrycket (det minsta heltalet inte mindre än antalet bitar dividerat med 8). (Den här funktionen är samma som funktionen CHAR_LENGTH |
| LÄGRE | Returnerar ett teckenuttryck efter konvertering av versaler till gemener. |
| ÖVRE | Returnerar en teckensträng där små bokstäver har omvandlats till stora bokstäver. |
| DELSTRÄNG | Returnerar en del av ett tecken, binärt uttryck, text eller bilduttryck i SQL Server. |
| TRIMMA | Tar bort blankstegstecken (32) eller andra angivna tecken från början och slutet av en sträng. |
| LEDANDE | Tar bort blanksteget (teckenkod 32) eller andra angivna tecken från början av en sträng. |
| AVSLUTANDE | Tar bort blankstegstecken (32) eller andra angivna tecken från slutet av en sträng. |
Här är några exempel:
| Funktion | Exempel | Resultat |
|---|---|---|
| TECKENLÄNGD | SELECT CHARACTER_LENGTH('abcdefg') from BlobStorage |
7 |
| CHAR_LENGTH | SELECT CHAR_LENGTH(_1) from BlobStorage |
1 |
| Lägre | SELECT LOWER('AbCdEfG') from BlobStorage |
abcdefg |
| ÖVRE | SELECT UPPER('AbCdEfG') from BlobStorage |
ABCDEFG |
| delsträng | SUBSTRING('123456789', 1, 5) |
23456 |
| TRIMMA | TRIM(BOTH '123' FROM '1112211Microsoft22211122') |
Microsoft |
Datumfunktioner
Följande standardfunktioner för SQL-datum stöds:
DATE_ADDDATE_DIFFEXTRACTTO_STRINGTO_TIMESTAMP
För närvarande konverteras alla datumformat av standarden ISO8601.
funktionen DATE_ADD
SQL-språket för frågeacceleration stöder år, månad, dag, timme, minut och sekund för DATE_ADD funktionen.
Exempel:
DATE_ADD(datepart, quantity, timestamp)
DATE_ADD('minute', 1, CAST('2017-01-02T03:04:05.006Z' AS TIMESTAMP)
DATE_DIFF-funktionen
SQL-språket för frågeacceleration stöder år, månad, dag, timme, minut och sekund för DATE_DIFF funktionen.
DATE_DIFF(datepart, timestamp, timestamp)
DATE_DIFF('hour','2018-11-09T00:00+05:30','2018-11-09T01:00:23-08:00')
Funktionen EXTRACT
För EXTRAHERING annat än datumdel som stöds för funktionen stöder SQL-språket för DATE_ADD frågeacceleration timezone_hour och timezone_minute som datumdel.
Exempel:
EXTRACT(datepart FROM timestampstring)
EXTRACT(YEAR FROM '2010-01-01T')
funktionen TO_STRING
Exempel:
TO_STRING(TimeStamp , format)
TO_STRING(CAST('1969-07-20T20:18Z' AS TIMESTAMP), 'MMMM d, y')
Den här tabellen beskriver strängar som du kan använda för att ange funktionens TO_STRING utdataformat.
| Formatera sträng | Utgång |
|---|---|
| Åå | År i 2-siffrigt format – 1999 som "99" |
| y | År i fyrsiffrigt format |
| yyyyy | År i fyrsiffrigt format |
| M | Månad på året - 1 |
| MM | Noll vadderad månad - 01 |
| MMM | Förkortad månad på året - JAN |
| MMMM | Hel månad - maj |
| d | Dag i månaden (1–31) |
| Dd | Noll vadderad dag i månaden (01-31) |
| a | AM eller PM |
| h | Dagens timme (1–12) |
| Hh | Noll vadderade timmar på dagen (01-12) |
| H | Dagens timme (0–23) |
| HH | Noll vadderad timme på dagen (00-23) |
| m | Minut i timmen (0–59) |
| mm | Noll vadderad minut (00-59) |
| s | Sekund av minuter (0-59) |
| ß | Noll vadderade sekunder (00–59) |
| S | Bråkdel av sekunder (0,1-0,9) |
| ß | Bråkdel av sekunder (0,01-0,99) |
| SSS | Bråkdel av sekunder (0,001-0,999) |
| X | Förskjutning i timmar |
| XX eller XXXX | Förskjutning i timmar och minuter (+0430) |
| XXX eller XXXXX | Förskjutning i timmar och minuter (-07:00) |
| x | Förskjutning i timmar (7) |
| xx eller xxxx | Förskjutning i timme och minut (+0530) |
| Xxx eller xxxxx | Förskjutning i timme och minut (+05:30) |
funktionen TO_TIMESTAMP
Endast IS08601 format stöds.
Exempel:
TO_TIMESTAMP(string)
TO_TIMESTAMP('2007T')
Anmärkning
Du kan också använda UTCNOW funktionen för att hämta systemtiden.
Aggregerade uttryck
En SELECT-instruktion kan innehålla antingen ett eller flera projektionsuttryck eller ett enda aggregeringsuttryck. Följande aggregeringsuttryck stöds:
| Uttryck | Beskrivning |
|---|---|
| COUNT(*) | Returnerar antalet poster som matchade predikatuttrycket. |
| COUNT(expression) | Returnerar antalet poster för vilka uttrycket inte är null. |
| AVG(expression) | Returnerar medelvärdet för uttryckets icke-null-värden. |
| MIN(uttryck) | Returnerar det minsta icke-null-värdet för uttrycket. |
| MAX(uttryck) | Returnerar det maximala värdet för uttrycket som inte är null. |
| SUM(expression) | Returnerar summan av alla icke-null-värden för uttrycket. |
FÖRSVUNNEN
Operatorn IS MISSING är den enda icke-standard som SQL-språket för frågeacceleration stöder. Om ett fält saknas i en viss indatapost för JSON-data utvärderas uttrycksfältet IS MISSING till det booleska värdet true.
Tabellbeskrivningar
För CSV-data är tabellnamnet alltid BlobStorage. Till exempel:
SELECT * FROM BlobStorage
För JSON-data finns ytterligare alternativ tillgängliga:
SELECT * FROM BlobStorage[*].path
Detta tillåter frågor över delmängder av JSON-data.
För JSON-frågor kan du nämna sökvägen i en del av FROM-satsen. De här sökvägarna hjälper till att parsa delmängden av JSON-data. De här sökvägarna kan referera till JSON-matris- och objektvärden.
Låt oss ta ett exempel för att förstå detta mer detaljerat.
Det här är våra exempeldata:
{
"id": 1,
"name": "mouse",
"price": 12.5,
"tags": [
"wireless",
"accessory"
],
"dimensions": {
"length": 3,
"width": 2,
"height": 2
},
"weight": 0.2,
"warehouses": [
{
"latitude": 41.8,
"longitude": -87.6
}
]
}
Du kanske bara warehouses är intresserad av JSON-objektet från ovanstående data. Objektet warehouses är en JSON-matristyp, så du kan nämna detta i FROM-satsen. Exempelfrågan kan se ut ungefär så här.
SELECT latitude FROM BlobStorage[*].warehouses[*]
Frågan hämtar alla fält men väljer endast latitud.
Om du bara vill komma åt dimensions JSON-objektvärdet kan du referera till objektet i din fråga. Till exempel:
SELECT length FROM BlobStorage[*].dimensions
Detta begränsar även din åtkomst till medlemmar i dimensions objektet. Om du vill komma åt andra medlemmar i JSON-fält och inre värden för JSON-objekt kan du använda en fråga som visas i följande exempel:
SELECT weight,warehouses[0].longitude,id,tags[1] FROM BlobStorage[*]
Anmärkning
BlobStorage och BlobStorage[*] refererar båda till hela objektet. Men om du har en sökväg i FROM-satsen måste du använda BlobStorage[*].path
Sys.Split
Det här är en särskild form av SELECT-instruktionen, som endast är tillgänglig för CSV-formaterade data.
SELECT sys.split(split_size) FROM BlobStorage
Använd den här instruktionen om du vill ladda ned och sedan bearbeta CSV-dataposter i batchar. På så sätt kan du bearbeta poster parallellt i stället för att behöva ladda ned alla poster samtidigt. Det här uttalandet returnerar inte poster från CSV-filen. Istället returnerar den en samling batchstorlekar. Du kan sedan använda varje batchstorlek för att hämta en batch med dataposter.
Använd parametern split_size för att ange antalet byte som du vill att varje batch ska innehålla. Om du till exempel bara vill bearbeta 10 MB data åt gången ser instruktionen ut så här: SELECT sys.split(10485760)FROM BlobStorage eftersom 10 MB är lika med 10 485 760 byte. Varje batch innehåller så många poster som får plats i dessa 10 MB.
I de flesta fall är storleken på varje batch något högre än det tal som du anger. Det beror på att en batch inte kan innehålla en partiell post. Om den sista registreringen i en sats startar innan tröskeln är nådd, kommer satsen att bli större så att den kan innehålla hela registreringen. Storleken på den sista batchen kommer sannolikt att vara mindre än den storlek som du anger.
Anmärkning
Split_size måste vara minst 10 MB (10485760).