Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przyspieszanie zapytań obsługuje język podobny do JĘZYKA SQL ANSI do wyrażania zapytań dotyczących zawartości obiektów blob. Przyspieszanie zapytań DIALEKT SQL jest podzbiorem ANSI SQL, z ograniczonym zestawem obsługiwanych typów danych, operatorów itp., ale rozszerza również język ANSI SQL do obsługi zapytań w hierarchicznych półstrukturalnych formatach danych, takich jak JSON.
Składnia SELECT
Jedyną instrukcją SQL obsługiwaną przez przyspieszanie zapytań jest instrukcja SELECT. Ten przykład zwraca każdy wiersz, dla którego wyrażenie zwraca wartość true.
SELECT * FROM table [WHERE expression] [LIMIT limit]
W przypadku danych sformatowanych w formacie CSV tabela musi mieć wartość BlobStorage
. Oznacza to, że zapytanie będzie uruchamiane na podstawie tego, który obiekt blob został określony w wywołaniu REST. W przypadku danych sformatowanych w formacie JSON tabela jest deskryptorem tabeli. Zobacz sekcję Deskryptory tabel w tym artykule.
W poniższym przykładzie dla każdego wiersza, dla którego wyrażenie WHERE zwraca wartość true, ta instrukcja zwróci nowy wiersz wykonany z obliczania każdego z wyrażeń projekcji.
SELECT expression [, expression ...] FROM table [WHERE expression] [LIMIT limit]
Możesz określić co najmniej jedną konkretną kolumnę w ramach wyrażenia SELECT (na przykład SELECT Title, Author, ISBN
).
Uwaga
Maksymalna liczba określonych kolumn, których można użyć w wyrażeniu SELECT, wynosi 49. Jeśli potrzebujesz instrukcji SELECT, aby zwrócić więcej niż 49 kolumn, użyj symbolu wieloznakowego (*
) dla wyrażenia SELECT (na przykład: SELECT *
).
Poniższy przykład zwraca zagregowane obliczenia (na przykład: średnia wartość określonej kolumny) dla każdego z wierszy, dla których wyrażenie zwraca wartość true.
SELECT aggregate_expression FROM table [WHERE expression] [LIMIT limit]
Poniższy przykład zwraca odpowiednie przesunięcia do dzielenia obiektu blob sformatowanego w formacie CSV. Zobacz sekcję Sys.Split tego artykułu.
SELECT sys.split(split_size)FROM BlobStorage
Typy danych
Typ danych | Opis |
---|---|
INT | 64-bitowa liczba całkowita ze znakiem. |
PŁYWAĆ | 64-bitowa liczba zmiennoprzecinkowa ("podwójna precyzja"). |
STRUNA | Ciąg Unicode o zmiennej długości. |
SYGNATURA CZASOWA | Punkt w czasie. |
BOOLOWSKI | Prawda czy fałsz. |
Podczas odczytywania wartości z danych sformatowanych w formacie CSV wszystkie wartości są odczytywane jako ciągi. Wartości ciągów mogą być konwertowane na inne typy przy użyciu wyrażeń CAST. Wartości mogą być niejawnie rzutowe do innych typów w zależności od kontekstu. Aby uzyskać więcej informacji, zobacz Pierwszeństwo typu danych (Transact-SQL).
Wyrażenia
Odwoływanie się do pól
W przypadku danych sformatowanych w formacie JSON lub danych sformatowanych w formacie CSV z wierszem nagłówka pola mogą być przywołyane według nazwy. Nazwy pól mogą być cytowane lub bez cudzysłów. Nazwy pól w cudzysłowie są ujęte w znaki podwójnego cudzysłowu ("
), mogą zawierać spacje i są wrażliwe na wielkość liter. Nazwy pól bez cudzysłów są bez uwzględniania wielkości liter i mogą nie zawierać żadnych znaków specjalnych.
W danych w formacie CSV pola mogą być również przywoływane za pomocą liczby porządkowej, poprzedzone znakiem podkreślenia ('_') (_
). Na przykład pierwsze pole może być przywołyne jako _1
, lub jedenaste pole może być przywołyne jako _11
. Odwoływanie się do pól według numerów porządkowych jest przydatne w przypadku danych w formacie CSV, które nie zawierają wiersza nagłówka; w takim przypadku jedynym sposobem odwoływania się do określonego pola jest korzystanie z numerów porządkowych.
Operatorów
Obsługiwane są następujące standardowe operatory SQL:
Obsługujący | Opis |
---|---|
= |
Porównuje równość dwóch wyrażeń (operator porównania). |
!= |
Sprawdza, czy jedno wyrażenie nie jest równe innemu wyrażeniu (operator porównania). |
<> |
Porównuje dwa wyrażenia nie równe (operator porównania). |
< |
Porównuje dwa wyrażenia w celu sprawdzenia, czy jedno jest mniejsze niż drugie (operator porównania). |
<= |
Porównuje dwa wyrażenia, aby sprawdzić, czy jedno jest mniejsze lub równe drugiemu (operator porównania). |
> |
Porównuje dwa wyrażenia za pomocą operatora "większe niż" (operator porównania). |
>= |
Porównuje dwa wyrażenia, sprawdzając, czy jedno jest większe lub równe drugiemu (operator porównania). |
+ |
Dodaje dwie liczby. Ten operator arytmetyczny może również dodać liczbę dni do daty. |
- |
Odejmuje dwie liczby (operator odejmowania arytmetycznego). |
/ |
Dzieli jedną liczbę przez inną (operator dzielenia arytmetycznego). |
* |
Mnoży dwa wyrażenia (operator mnożenia arytmetycznego). |
% |
Zwraca resztę jednej liczby podzielonej przez inną. |
AND |
Wykonuje bitową operację logiczną AND między dwiema wartościami całkowitymi. |
OR |
Wykonuje bitową operację logiczną OR między dwiema określonymi wartościami całkowitymi przetłumaczoną na wyrażenia binarne w instrukcjach Transact-SQL. |
NOT |
Neguje dane wejściowe wartości logicznej. |
CAST |
Konwertuje wyrażenie jednego typu danych na inny. |
BETWEEN |
Określa zakres do przetestowania. |
IN |
Określa, czy określona wartość jest zgodna z dowolną wartością w podzapytaniu, czy na liście. |
NULLIF |
Zwraca wartość null, jeśli dwa określone wyrażenia są równe. |
COALESCE |
Oblicza argumenty w kolejności i zwraca bieżącą wartość pierwszego wyrażenia, które początkowo nie daje wartości NULL. |
Jeśli typy danych po lewej i prawej stronie operatora są różne, automatyczna konwersja zostanie wykonana zgodnie z regułami określonymi tutaj: pierwszeństwo typu danych (Transact-SQL).
Język SQL przyspieszania zapytań obsługuje tylko bardzo mały podzestaw typów danych omówionych w tym artykule. Zobacz sekcję Typy danych w tym artykule.
Rzuca
Język SQL przyspieszania zapytań obsługuje operator CAST zgodnie z regułami w tym miejscu: Konwersja typu danych (aparat bazy danych).
Język SQL przyspieszania zapytań obsługuje tylko niewielki podzestaw typów danych omówionych w tym artykule. Zobacz sekcję Typy danych w tym artykule.
Funkcje ciągów
Język SQL przyspieszania zapytań obsługuje następujące standardowe funkcje ciągów SQL:
Funkcja | Opis |
---|---|
CHAR_LENGTH | Zwraca długość znaków wyrażenia ciągu, jeśli wyrażenie ciągu jest typem danych znaków; W przeciwnym razie zwraca długość w bajtach wyrażenia ciągu (najmniejsza liczba całkowita nie mniejsza niż liczba bitów podzielona przez 8). (Ta funkcja jest taka sama jak funkcja CHARACTER_LENGTH). |
DŁUGOŚĆ_ZNAKÓW | Zwraca długość znaków wyrażenia ciągu, jeśli wyrażenie ciągu jest typem danych znaków; W przeciwnym razie zwraca długość w bajtach wyrażenia ciągu (najmniejsza liczba całkowita nie mniejsza niż liczba bitów podzielona przez 8). (Ta funkcja jest taka sama jak funkcja CHAR_LENGTH |
DOLNY | Zwraca wyrażenie znaku po przekonwertowaniu danych z wielkimi literami na małe litery. |
GÓRNY | Zwraca wyrażenie znakowe z małymi literami przekształconymi na wielkie litery. |
podciąg | Zwraca część znaku, pliku binarnego, tekstu lub wyrażenia obrazu w programie SQL Server. |
trim | Usuwa znak spacji (32) lub inne określone znaki od początku i końca ciągu. |
Wiodący | Usuwa znak spacji (32) lub inne określone znaki od początku ciągu. |
ŚLEDZENIE | Usuwa znak spacji (32) lub inne określone znaki z końca ciągu. |
Oto kilka przykładów:
Funkcja | Przykład | Wynik |
---|---|---|
DŁUGOŚĆ_ZNAKÓW | SELECT CHARACTER_LENGTH('abcdefg') from BlobStorage |
7 |
CHAR_LENGTH | SELECT CHAR_LENGTH(_1) from BlobStorage |
1 |
DOLNY | SELECT LOWER('AbCdEfG') from BlobStorage |
abcdefg |
GÓRNY | SELECT UPPER('AbCdEfG') from BlobStorage |
ABCDEFG |
PODCIĄG | SUBSTRING('123456789', 1, 5) |
23456 |
PRZYCINANIE | TRIM(BOTH '123' FROM '1112211Microsoft22211122') |
Microsoft |
Funkcje dotyczące dat
Obsługiwane są następujące standardowe funkcje dat SQL:
DATE_ADD
DATE_DIFF
EXTRACT
TO_STRING
TO_TIMESTAMP
Obecnie wszystkie formaty dat standardowych IS08601 są konwertowane.
DATE_ADD, funkcja
Język SQL przyspieszania zapytań obsługuje rok, miesiąc, dzień, godzinę, minutę, sekundę dla funkcji DATE_ADD
.
Przykłady:
DATE_ADD(datepart, quantity, timestamp)
DATE_ADD('minute', 1, CAST('2017-01-02T03:04:05.006Z' AS TIMESTAMP)
DATE_DIFF, funkcja
Język SQL przyspieszania zapytań obsługuje rok, miesiąc, dzień, godzinę, minutę, sekundę dla funkcji DATE_DIFF
.
DATE_DIFF(datepart, timestamp, timestamp)
DATE_DIFF('hour','2018-11-09T00:00+05:30','2018-11-09T01:00:23-08:00')
EXTRACT, funkcja
W przypadku funkcji EXTRACT innej niż część daty obsługiwana przez funkcję DATE_ADD
, język SQL przyspieszania zapytań obsługuje timezone_hour i timezone_minute jako części daty.
Przykłady:
EXTRACT(datepart FROM timestampstring)
EXTRACT(YEAR FROM '2010-01-01T')
Funkcja TO_STRING
Przykłady:
TO_STRING(TimeStamp , format)
TO_STRING(CAST('1969-07-20T20:18Z' AS TIMESTAMP), 'MMMM d, y')
W tej tabeli opisano ciągi, których można użyć do określenia formatu wyjściowego TO_STRING
funkcji.
Formatowanie ciągu | Dane wyjściowe |
---|---|
Rr | Rok w formacie 2 cyfry — 1999 jako "99" |
y | Rok w formacie 4-cyfrowym |
yyyy | Rok w formacie 4-cyfrowym |
M | Miesiąc roku — 1 |
MM | Miesiąc uzupełniony zerem - 01 |
MMM | Skrócony miesiąc roku — JAN |
MMMM | Pełny miesiąc — maj |
d | Dzień miesiąca (1–31) |
Dd | Dzień miesiąca z dopełnieniem zerowym (01-31) |
a | AM lub PM |
h | Godzina dnia (1–12) |
Gg | Zero dopełnione godziny dnia (01-12) |
H | Godzina dnia (0–23) |
GG | Zero Dopełniona godzina dnia (00-23) |
m | Minuta godziny (0–59) |
Mm | Minuta zero wypełniona (00-59) |
s | Sekunda minut (0–59) |
ß | Zero wypełnionych sekund (00-59) |
S | Ułamek sekund (0,1–0,9) |
ß | Ułamek sekund (0,01-0,99) |
SSS | Ułamek sekund (0,001-0,999) |
X | Przesunięcie w godzinach |
XX lub XXXX | Przesunięcie w godzinach i minutach (+0430) |
XXX lub XXXXX | Przesunięcie w godzinach i minutach (-07:00) |
x | Przesunięcie w godzinach (7) |
xx lub xxxx | Przesunięcie w godzinach i minutach (+0530) |
Xxx lub xxxxx | Przesunięcie w godzinach i minutach (+05:30) |
TO_TIMESTAMP, funkcja
Obsługiwane są tylko IS08601 formaty.
Przykłady:
TO_TIMESTAMP(string)
TO_TIMESTAMP('2007T')
Uwaga
Możesz również użyć UTCNOW
funkcji , aby uzyskać czas systemowy.
Wyrażenia agregacji
Instrukcja SELECT może zawierać jedno lub więcej wyrażeń projekcji lub pojedyncze wyrażenie agregacji. Obsługiwane są następujące wyrażenia agregacji:
Wyrażenie | Opis |
---|---|
COUNT(*) | Zwraca liczbę rekordów, które pasują do wyrażenia predykatu. |
COUNT(expression) | Zwraca liczbę rekordów, dla których wyrażenie nie ma wartości null. |
AVG(wyrażenie) | Zwraca średnią wartości wyrażenia innego niż null. |
MIN(wyrażenie) | Zwraca minimalną wartość wyrażenia inną niż null. |
MAX(wyrażenie) | Zwraca maksymalną wartość wyrażenia inną niż null. |
SUM(expression) | Zwraca sumę wszystkich wartości innych niż null wyrażenia. |
BRAKUJĄCY
Operator IS MISSING
jest jedynym niestandardowym operatorem, który jest obsługiwany przez język SQL do przyspieszania zapytań. W przypadku danych JSON, jeśli brakuje pola z określonego rekordu wejściowego, pole IS MISSING
wyrażenia zwróci wartość logiczną true.
Deskryptory tabel
W przypadku danych CSV nazwa tabeli to zawsze BlobStorage
. Na przykład:
SELECT * FROM BlobStorage
W przypadku danych JSON dostępne są dodatkowe opcje:
SELECT * FROM BlobStorage[*].path
Umożliwia to wykonywanie zapytań w podzestawach danych JSON.
W przypadku zapytań JSON można wspomnieć o ścieżce w części klauzuli FROM. Te ścieżki ułatwią analizowanie podzestawu danych JSON. Te ścieżki mogą odwoływać się do wartości tablicy i obiektu JSON.
Przyjrzyjmy się przykładowi, aby zrozumieć to bardziej szczegółowo.
Oto nasze przykładowe dane:
{
"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
}
]
}
Być może interesuje Cię tylko warehouses
obiekt JSON z powyższych danych. Obiekt warehouses
jest typem tablicy JSON, więc możesz wspomnieć o tym w klauzuli FROM. Przykładowe zapytanie może wyglądać mniej więcej tak.
SELECT latitude FROM BlobStorage[*].warehouses[*]
Zapytanie pobiera wszystkie pola, ale wybiera tylko szerokość geograficzną.
Jeśli chcesz uzyskać dostęp tylko dimensions
do wartości obiektu JSON, możesz użyć odwołania do tego obiektu w zapytaniu. Na przykład:
SELECT length FROM BlobStorage[*].dimensions
Również ogranicza to dostęp do członków obiektu dimensions
. Jeśli chcesz uzyskać dostęp do innych elementów członkowskich pól JSON i wartości wewnętrznych obiektów JSON, możesz użyć zapytania, takiego jak pokazano w poniższym przykładzie:
SELECT weight,warehouses[0].longitude,id,tags[1] FROM BlobStorage[*]
Uwaga
BlobStorage i BlobStorage[*] odnoszą się do całego obiektu. Jeśli jednak masz ścieżkę w klauzuli FROM, musisz użyć ścieżki BlobStorage[*].path
Sys.Split
Jest to specjalna forma instrukcji SELECT, która jest dostępna tylko dla danych sformatowanych w formacie CSV.
SELECT sys.split(split_size) FROM BlobStorage
Użyj tej instrukcji w przypadkach, w których chcesz pobrać, a następnie przetworzyć rekordy danych CSV w partiach. Dzięki temu można przetwarzać rekordy równolegle zamiast pobierać wszystkie rekordy jednocześnie. Ta instrukcja nie zwraca rekordów z pliku CSV. Zamiast tego zwraca kolekcję rozmiarów partii. Następnie możesz użyć każdego rozmiaru partii, aby pobrać partię rekordów danych.
Użyj parametru split_size , aby określić liczbę bajtów, które mają zawierać każda partia. Jeśli na przykład chcesz przetworzyć tylko 10 MB danych jednocześnie, instrukcja będzie wyglądać następująco: SELECT sys.split(10485760)FROM BlobStorage
ponieważ 10 MB jest równe 10 485 760 bajtów. Każda partia będzie zawierać tyle rekordów, ile może mieścić się w tych 10 MB.
W większości przypadków rozmiar każdej partii będzie nieco wyższy niż określona liczba. Dzieje się tak, ponieważ partia nie może zawierać rekordu częściowego. Jeśli ostatni rekord w partii rozpoczyna się przed osiągnięciem progu, partia będzie większa, aby mogła zawierać pełny rekord. Rozmiar ostatniej partii prawdopodobnie będzie mniejszy niż rozmiar, który określisz.
Uwaga
Split_size musi mieć co najmniej 10 MB (10485760).