Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A lekérdezésgyorsítás egy ANSI SQL-szerű nyelvet támogat a lekérdezések blobtartalmakon keresztüli kifejezéséhez. A lekérdezésgyorsító SQL-dialektus az ANSI SQL egy részhalmaza, amely korlátozott számú támogatott adattípussal, operátorral stb. rendelkezik, de az ANSI SQL-en is bővül, hogy támogassa a lekérdezéseket hierarchikus félig strukturált adatformátumokon, például a JSON-on.
SELECT Szintaxis
A lekérdezésgyorsítás által támogatott egyetlen SQL-utasítás a SELECT utasítás. Ez a példa minden olyan sort visszaad, amelynél a kifejezés igaz értéket ad vissza.
SELECT * FROM table [WHERE expression] [LIMIT limit]
CSV formátumú adatok esetén a táblának kell lennie BlobStorage. Ez azt jelenti, hogy a lekérdezés a REST-hívásban megadott bármelyik blobon fog futni. JSON-formátumú adatok esetén a tábla egy "táblaleíró". Lásd a cikk Táblaleírók szakaszát.
Az alábbi példában minden olyan sor esetében, amelynek a WHERE kifejezés igaz értéket ad vissza, ez az utasítás egy új sort ad vissza, amely az egyes vetületi kifejezések kiértékelésével jön létre.
SELECT expression [, expression ...] FROM table [WHERE expression] [LIMIT limit]
A SELECT kifejezés részeként megadhat egy vagy több oszlopot (például SELECT Title, Author, ISBN).
Megjegyzés
A SELECT kifejezésben használható oszlopok maximális száma 49. Ha a SELECT utasításnak 49-nél több oszlopot kell visszaadnia, akkor használjon helyettesítő karaktert (*) a SELECT kifejezéshez (például: SELECT *).
Az alábbi példa aggregátumszámítást (például egy adott oszlop átlagértékét) ad vissza az egyes sorokban, amelyeknél a kifejezés igaz értéket ad vissza.
SELECT aggregate_expression FROM table [WHERE expression] [LIMIT limit]
Az alábbi példa megfelelő eltolásokat ad vissza egy CSV formátumú blob felosztásához. Lásd a cikk Sys.Split szakaszát.
SELECT sys.split(split_size)FROM BlobStorage
Adattípusok
| Adattípus | Leírás |
|---|---|
| INT | 64 bites aláírt egész szám. |
| ÚSZIK | 64 bites ("dupla pontosságú") lebegőpontos. |
| Zsinór | Változó hosszúságú Unicode-sztring. |
| IDŐBÉLYEG | Egy pont az időben. |
| BULIÁN | Igaz vagy hamis. |
Ha CSV formátumú adatokból olvas be értékeket, minden érték sztringként lesz beolvasva. A sztringértékek más típusúvá alakíthatók CAST-kifejezések használatával. Az értékek a környezettől függően implicit módon más típusokra is átadhatók. További információ: Adattípus elsőbbsége (Transact-SQL).
Kifejezések
Hivatkozási mezők
hu-HU: JSON-formátumú adatok vagy fejlécsort tartalmazó CSV-formátumú adatok esetében a mezőkre a nevük alapján lehet hivatkozni. A mezőnevek idézhetők vagy visszavonhatók. Az idézett mezőneveket kettős idézőjelek (") közé tesszük, tartalmazhatnak szóközöket, és megkülönböztetik a kis- és nagybetűket. Az idézőjelek használata nélküli mezőnevek nem érzékenyek a kis- és nagybetűkre, és nem tartalmazhatnak speciális karaktereket.
CSV-formátumú adatokban a mezőkre lehet sorszám alapján is hivatkozni, ami egy aláhúzásjellel (_) kezdődik. Például az első mezőre úgy hivatkozhat, mint _1, vagy a tizenegyedik mezőre úgy hivatkozhat, mint _11. A mezők sorszám szerinti hivatkozása olyan CSV-formátumú adatok esetében hasznos, amelyek nem tartalmaznak fejlécsort, ebben az esetben az egyetlen módja annak, hogy egy adott mezőre sorszám alapján hivatkozzon.
Működtetők
A következő szabványos SQL-operátorok támogatottak:
| Operátor | Leírás |
|---|---|
= |
Két kifejezés egyenlőségét hasonlítja össze (összehasonlító operátor). |
!= |
Azt vizsgálja, hogy az egyik kifejezés nem egyenlő-e egy másik kifejezéssel (összehasonlító operátor). |
<> |
Két olyan kifejezést hasonlít össze, amely nem egyenlő (összehasonlító operátor). |
< |
Két kifejezést hasonlít össze kisebb mint (összehasonlító operátor) esetében. |
<= |
Két kifejezést hasonlít össze kisebb vagy egyenlő értékre (összehasonlító operátor). |
> |
Két kifejezést hasonlít össze a "nagyobb mint" összehasonlító operátorral. |
>= |
Két kifejezést hasonlít össze nagyobb vagy egyenlő értékre (összehasonlító operátor). |
+ |
Két számot ad hozzá. Ez az összeadási aritmetikai operátor egy napokban megadott számot is hozzáadhat egy dátumhoz. |
- |
Kivon két számot (aritmetikai kivonási operátor). |
/ |
Egy számot egy másikkal (aritmetikai osztás operátorával) oszt el. |
* |
Két kifejezés (aritmetikai szorzási operátor) szorzása. |
% |
Egy szám fennmaradó részét adja vissza egy másikkal osztva. |
AND |
Bitenkénti logikai ÉS műveletet hajt végre két egész szám között. |
OR |
Bitenkénti logikai VAGY műveletet hajt végre két megadott egész számérték között az Transact-SQL utasításokban lévő bináris kifejezésekre lefordítva. |
NOT |
Logikai bemenetet nem ad ki. |
CAST |
Egy adattípus kifejezését konvertálja egy másikra. |
BETWEEN |
Egy tesztelni kívánt tartományt határoz meg. |
IN |
Meghatározza, hogy egy megadott érték megfelel-e egy al lekérdezés vagy lista bármely értékének. |
NULLIF |
Null értéket ad vissza, ha a két megadott kifejezés egyenlő. |
COALESCE |
Az argumentumokat sorrendben értékeli ki, és az első olyan kifejezés aktuális értékét adja vissza, amely kezdetben nem null értékű. |
Ha egy operátor bal és jobb oldalán eltérő adattípusok vannak, akkor az automatikus átalakítás az itt megadott szabályok szerint történik: Adattípus elsőbbsége (Transact-SQL).
A lekérdezésgyorsító SQL-nyelv csak a cikkben tárgyalt adattípusok egy nagyon kis részét támogatja. Lásd a cikk Adattípusok szakaszát.
Szereposztás
A lekérdezésgyorsító SQL-nyelv támogatja a CAST operátort az alábbi szabályok szerint: Adattípus-átalakítás (Adatbázismotor).
A lekérdezésgyorsító SQL-nyelv csak a cikkben tárgyalt adattípusok egy kis részét támogatja. Lásd a cikk Adattípusok szakaszát.
Karakterlánc függvények
A lekérdezésgyorsító SQL-nyelv a következő szabványos SQL-sztringfüggvényeket támogatja:
| Funkció | Leírás |
|---|---|
| KAR_HOSSZ | A sztringkifejezés karaktereinek hosszát adja vissza, ha a sztringkifejezés karakter adattípusú; ellenkező esetben a sztringkifejezés bájtban megadott hosszát adja vissza (a legkisebb egész nem kisebb, mint a bitek száma 8-tal osztva). (Ez a függvény megegyezik a CHARACTER_LENGTH függvénnyel.) |
| KARAKTER_HOSSZUSÁG | A sztringkifejezés karaktereinek hosszát adja vissza, ha a sztringkifejezés karakter adattípusú; ellenkező esetben a sztringkifejezés bájtban megadott hosszát adja vissza (a legkisebb egész nem kisebb, mint a bitek száma 8-tal osztva). (Ez a függvény megegyezik a CHAR_LENGTH függvénnyel |
| ALSÓ | A nagybetűs karakteradatok kisbetűssé alakítása után visszaad egy karakterkifejezést. |
| FELSŐ | Egy kisbetűs adatokat nagybetűssé konvertáló karakterkifejezést ad vissza. |
| részszöveg | Egy karakter, bináris, szöveg vagy képkifejezés egy részét adja vissza az SQL Serverben. |
| NYÍR | Eltávolítja a szóköz karaktert (char 32) vagy a megadott karaktereket a karakterlánc elejéről és végéről. |
| VEZETŐ | Eltávolítja a szóköz karaktert char(32) vagy más megadott karaktereket a karakterlánc elejéről. |
| LEMARADÓ | Eltávolítja a szóköz karakter (32) vagy más megadott karaktereket a karakterlánc végéről. |
Íme néhány példa:
| Funkció | Példa | Eredmény |
|---|---|---|
| KARAKTER_HOSSZUSÁG | SELECT CHARACTER_LENGTH('abcdefg') from BlobStorage |
7 |
| KAR_HOSSZ | SELECT CHAR_LENGTH(_1) from BlobStorage |
1 |
| ALSÓ | SELECT LOWER('AbCdEfG') from BlobStorage |
abcdefg |
| FELSŐ | SELECT UPPER('AbCdEfG') from BlobStorage |
ABCDEFG |
| részszöveg | SUBSTRING('123456789', 1, 5) |
23456 |
| NYÍR | TRIM(BOTH '123' FROM '1112211Microsoft22211122') |
Microsoft |
Dátumfüggvények
A következő szabványos SQL-dátumfüggvények támogatottak:
DATE_ADDDATE_DIFFEXTRACTTO_STRINGTO_TIMESTAMP
Jelenleg a standard IS08601 összes dátumformátuma konvertálva van.
DATE_ADD függvény
A lekérdezésgyorsító SQL-nyelv támogatja a függvény év, hónap, nap, óra, perc és másodperc értékét DATE_ADD .
Példák:
DATE_ADD(datepart, quantity, timestamp)
DATE_ADD('minute', 1, CAST('2017-01-02T03:04:05.006Z' AS TIMESTAMP)
DATE_DIFF függvény
A lekérdezésgyorsító SQL-nyelv támogatja a függvény év, hónap, nap, óra, perc és másodperc értékét DATE_DIFF .
DATE_DIFF(datepart, timestamp, timestamp)
DATE_DIFF('hour','2018-11-09T00:00+05:30','2018-11-09T01:00:23-08:00')
EXTRACT függvény
A DATE_ADD függvény által támogatott dátumrészeken kívül a lekérdezésgyorsító SQL-nyelv támogatja a timezone_hour és timezone_minute elemeket dátumrészként.
Példák:
EXTRACT(datepart FROM timestampstring)
EXTRACT(YEAR FROM '2010-01-01T')
TO_STRING függvény
Példák:
TO_STRING(TimeStamp , format)
TO_STRING(CAST('1969-07-20T20:18Z' AS TIMESTAMP), 'MMMM d, y')
Ez a táblázat a függvény kimeneti formátumának TO_STRING megadására használható sztringeket ismerteti.
| Sztring formázása | Kimenet |
|---|---|
| Yy | Év kétjegyű formátumban - 1999 mint '99' |
| y | Év 4 jegyű formátumban |
| yyyyy | Év 4 jegyű formátumban |
| M | Év hónapja – 1 |
| MM | Nulla párnázott hónap – 01 |
| MMM | Az év rövidített hónapja – JANUÁR |
| MMMM | Teljes hónap – május |
| d | A hónap napja (1-31) |
| Dd | A hónap napjának nullával kiegészített formája (01-31) |
| egy | AM vagy PM |
| h | A nap órája (1-12) |
| Hh | A nap nullával kiegészített órái (01-12) |
| H | A nap órája (0-23) |
| HH | A nap nulla párnázott órája (00-23) |
| m | Az óra percének száma (0-59) |
| Mm | Nulla párnázott perc (00-59) |
| s | Percek másodperce (0-59) |
| Ss | Nulla párnázott másodperc (00-59) |
| S | Másodperc törtrésze (0,1-0,9) |
| SS | Másodperc törtrésze (0,01-0,99) |
| ÉER | Másodperc törtrésze (0,001-0,999) |
| X | Eltolás órákban |
| XX vagy XXXX | Eltolás órákban és percekben (+0430) |
| XXX vagy XXXXX | Eltolás órákban és percekben (-07:00) |
| x | Eltolás órákban (7) |
| xx vagy xxxx | Eltolás óránként és percben (+0530) |
| Xxx vagy xxxxx | Eltolás óránként és percben (+05:30) |
TO_TIMESTAMP függvény
Csak IS08601 formátumok támogatottak.
Példák:
TO_TIMESTAMP(string)
TO_TIMESTAMP('2007T')
Megjegyzés
A UTCNOW függvény használatával is lekérheti a rendszeridőt.
Kifejezések összesítése
A SELECT utasítás tartalmazhat egy vagy több vetületi kifejezést vagy egyetlen összesítő kifejezést. A következő összesítő kifejezések támogatottak:
| Kifejezés | Leírás |
|---|---|
| DARAB(*) | A predikátumkifejezésnek megfelelő rekordok számát adja vissza. |
| DARAB(kifejezés) | Azoknak a rekordoknak a számát adja vissza, amelyek kifejezése nem null. |
| AVG(kifejezés) | A kifejezés nem null értékű értékeinek átlagát adja eredményül. |
| MIN(kifejezés) | A kifejezés minimális nem null értékű értékét adja vissza. |
| MAX(kifejezés) | A kifejezés maximális nem null értékű értékét adja vissza. |
| SZUM(kifejezés) | A kifejezés összes nem null értékű értékének összegét adja vissza. |
HIÁNYZÓ
Az IS MISSING operátor az egyetlen nem szabványos, amelyet a lekérdezésgyorsítási SQL-nyelv támogat. JSON-adatok esetén, ha egy mező hiányzik egy adott bemeneti rekordból, a kifejezésmező IS MISSING igaz logikai értékre lesz kiértékelve.
Táblaleírások
CSV-adatok esetén a tábla neve mindig BlobStorage. Például:
SELECT * FROM BlobStorage
JSON-adatok esetén további lehetőségek érhetők el:
SELECT * FROM BlobStorage[*].path
Ez lehetővé teszi a lekérdezéseket a JSON-adatok részhalmazai felett.
JSON-lekérdezések esetén az elérési utat a FROM záradék egy részében említheti meg. Ezek az elérési utak segítenek elemezni a JSON-adatok részhalmazát. Ezek az elérési utak JSON-tömb- és objektumértékekre hivatkozhatnak.
Vegyünk egy példát ennek részletesebb megértéséhez.
Ezek a mintaadatok:
{
"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
}
]
}
Előfordulhat, hogy csak a warehouses fenti adatokból származó JSON-objektum érdekli. Az warehouses objektum egy JSON-tömbtípus, ezért ezt a FROM záradékban is megemlítheti. A minta lekérdezés így nézhet ki.
SELECT latitude FROM BlobStorage[*].warehouses[*]
A lekérdezés lekéri az összes mezőt, de csak a szélességet választja ki.
Ha csak a dimensions JSON-objektum értékét szeretné elérni, a lekérdezésben hivatkozhat erre az objektumra. Például:
SELECT length FROM BlobStorage[*].dimensions
Ez is korlátozza a dimensions objektum tagjaihoz való hozzáférést. Ha a JSON-mezők más tagjait és a JSON-objektumok belső értékeit szeretné elérni, akkor használhat egy lekérdezést, amely az alábbi példában látható:
SELECT weight,warehouses[0].longitude,id,tags[1] FROM BlobStorage[*]
Megjegyzés
A BlobStorage és a BlobStorage[*] egyaránt az egész objektumra hivatkozik. Ha azonban van egy elérési útja a FROM záradékban, akkor a BlobStorage[*].path függvényt kell használnia
Sys.Split
Ez a SELECT utasítás egy speciális formája, amely csak CSV formátumú adatokhoz érhető el.
SELECT sys.split(split_size) FROM BlobStorage
Ezt az utasítást olyan esetekben használja, amikor csV-adatrekordokat szeretne letölteni és feldolgozni kötegekben. Így párhuzamosan is feldolgozhatja a rekordokat ahelyett, hogy egyszerre kellene letöltenie az összes rekordot. Ez az utasítás nem ad vissza rekordokat a CSV-fájlból. Ehelyett kötegméretek gyűjteményét adja vissza. Ezután az egyes kötegméretek használatával lekérheti az adatrekordok kötegét.
A split_size paraméter használatával adja meg az egyes kötegek által tartalmazandó bájtok számát. Ha például egyszerre csak 10 MB adatot szeretne feldolgozni, az utasítás így nézne ki: SELECT sys.split(10485760)FROM BlobStorage mivel a 10 MB egyenlő 10 485 760 bájttal. Minden köteg annyi rekordot tartalmaz, amennyi belefér a 10 MB-ba.
A legtöbb esetben az egyes kötegek mérete valamivel nagyobb lesz, mint a megadott szám. Ennek az az oka, hogy egy köteg nem tartalmazhat részleges rekordot. Ha egy köteg utolsó rekordja a küszöbérték vége előtt kezdődik, a köteg nagyobb lesz, hogy az tartalmazza a teljes rekordot. Az utolsó köteg mérete valószínűleg kisebb lesz, mint a megadott méret.
Megjegyzés
A split_size legalább 10 MB-nak (10485760) kell lennie.