SELECT
Dotyczy: Databricks SQL Databricks Runtime
Komponuje zestaw wyników z co najmniej jednego odwołania do tabeli.
Klauzula SELECT
może być częścią zapytania, które obejmuje również typowe wyrażenia tabeli (CTE), operacje zestawu i różne inne klauzule.
Składnia
SELECT [ hints ] [ ALL | DISTINCT ] { named_expression | star_clause } [, ...]
FROM table_reference [, ...]
[ LATERAL VIEW clause ]
[ WHERE clause ]
[ GROUP BY clause ]
[ HAVING clause]
[ QUALIFY clause ]
named_expression
expression [ column_alias ]
star_clause
[ { table_name | view_name } . ] * [ except_clause ]
except_clause
EXCEPT ( { column_name | field_name } [, ...] )
Parametry
-
Wskazówki pomagają optymalizatorowi usługi Azure Databricks podejmować lepsze decyzje dotyczące planowania. Usługa Azure Databricks obsługuje wskazówki wpływające na wybór strategii sprzężenia i ponowne partycjonowanie danych.
ALL
Zaznacz wszystkie pasujące wiersze z odwołań do tabeli. Włączone domyślnie.
ODMIENNY
Zaznacz wszystkie pasujące wiersze z odwołań do tabeli po usunięciu duplikatów w wynikach.
named_expression
Wyrażenie z opcjonalną przypisaną nazwą.
-
Kombinacja co najmniej jednej wartości, operatorów i funkcji SQL, która daje w wyniku wartość.
-
Opcjonalny identyfikator kolumny nazewnictwa wyniku wyrażenia. Jeśli nie
column_alias
podano usługi Databricks SQL, pochodzi z niego.
-
-
Skrócona nazwa wszystkich kolumn możliwych do odwołania w klauzuli
FROM
lub kolumnach lub polach odwołania do określonej tabeli w klauzuliFROM
. -
Źródło danych wejściowych dla elementu
SELECT
. To odwołanie wejściowe można przekształcić w odwołanie do przesyłania strumieniowego przy użyciuSTREAM
słowa kluczowego przed odwołaniem. -
Używane w połączeniu z funkcjami generatora, takimi jak
EXPLODE
, które generują tabelę wirtualną zawierającą co najmniej jeden wiersz.LATERAL VIEW
stosuje wiersze do każdego oryginalnego wiersza wyjściowego.W usłudze Databricks SQL i począwszy od środowiska Databricks Runtime 12.2 ta klauzula jest przestarzała. Należy wywołać funkcję generatora wartości tabeli jako table_reference.
-
Filtruje wynik klauzuli
FROM
na podstawie podanych predykatów. -
Wyrażenia używane do grupowania wierszy. Jest to używane w połączeniu z funkcjami agregacji (
MIN
,MAX
,COUNT
,SUM
,AVG
) do grupowania wierszy na podstawie wyrażeń grupowania i wartości agregujących w każdej grupie. Gdy klauzulaFILTER
jest dołączona do funkcji agregującej, do tej funkcji są przekazywane tylko pasujące wiersze. -
Predykaty, według których wiersze generowane przez
GROUP BY
są filtrowane. KlauzulaHAVING
jest używana do filtrowania wierszy po wykonaniu grupowania. Jeśli określiszHAVING
wartość bezGROUP BY
, oznaczaGROUP BY
to bez grupowania wyrażeń (agregacja globalna). -
Predykaty używane do filtrowania wyników funkcji okna. Aby użyć
QUALIFY
funkcji , wymagana jest co najmniej jedna funkcja okna na liście SELECT lub klauzuli QUALIFY.
Wybieranie w tabeli delty
Oprócz standardowych SELECT
opcji tabele delty obsługują opcje podróży czasowej opisane w tej sekcji. Aby uzyskać szczegółowe informacje, zobacz Praca z historią tabel usługi Delta Lake.
Składnia aparatu AS OF
table_identifier TIMESTAMP AS OF timestamp_expression
table_identifier VERSION AS OF version
timestamp_expression
może być jednym z:'2018-10-18T22:15:12.013Z'
, czyli ciąg, który można rzutować na znacznik czasucast('2018-10-18 13:36:32 CEST' as timestamp)
'2018-10-18'
, czyli ciąg datycurrent_timestamp() - interval 12 hours
date_sub(current_date(), 1)
- Dowolne inne wyrażenie, które jest lub można rzutować na znacznik czasu
version
to długa wartość, którą można uzyskać z danych wyjściowych elementuDESCRIBE HISTORY table_spec
.
Ani nie timestamp_expression
version
może być podzapytaniem.
Przykład
> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'
> SELECT * FROM events VERSION AS OF 123
Składnia aparatu @
@
Użyj składni, aby określić znacznik czasu lub wersję. Znacznik czasu musi być w yyyyMMddHHmmssSSS
formacie. Możesz określić wersję po @
, poprzedzając v
element do wersji. Aby na przykład wysłać zapytanie o wersję 123
tabeli events
, określ wartość events@v123
.
Przykład
> SELECT * FROM events@20190101000000000
> SELECT * FROM events@v123
Przykłady
-- select all referencable columns from all tables
> SELECT * FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
1 2 3 4
-- select all referencable columns from one table
> SELECT t2.* FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
3 4
-- select all referencable columns from all tables except t2.c4
> SELECT * EXCEPT(c4) FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
1 2 3
-- select all referencable columns from a table, except a nested field.
> SELECT * EXCEPT(c2.b) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
1 { "a" : 2 }
-- Removing all fields results in an empty struct
> SELECT * EXCEPT(c2.b, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
1 { }
-- Overlapping names result in an error
> SELECT * EXCEPT(c2, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
Error: EXCEPT_OVERLAPPING_COLUMNS
Powiązane artykuły
- CLUSTER BY, klauzula
- Wspólne wyrażenie tabeli (CTE)
- DISTRIBUTE BY, klauzula
- GROUP BY, klauzula
- KLAUZULA HAVING
- KLAUZULA QUALIFY
- Wskazówki
- KLAUZULA VALUES
- DOŁĄCZYĆ
- KLAUZULA LATERAL VIEW
- KLAUZULA LIMIT
- KLAUZULA OFFSET
- KLAUZULA ORDER BY
- Klauzula PIVOT
- Zapytanie
- TABLESAMPLE, klauzula
- Ustawianie operatorów
- SORT BY, klauzula
- Star, klauzula
- Funkcja wartości tabeli (TVF)
- odwołanie do tabeli
- UNPIVOT, klauzula
- KLAUZULA WHERE
- KLAUZULA WINDOW
- Funkcje okien