Notatka
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.
Dotyczy:
Databricks SQL
Databricks Runtime
Tworzy zestaw wyników z co najmniej jednej referencji do jednej lub więcej tabel .
Klauzula SELECT może być częścią zapytania, które zawiera również typowe wyrażenia tabeli (CTE), operacje zestawu i różne inne klauzule.
Składnia
SELECT 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
-
Zbiera kolumny, które mają być zwracane z podzapytania, w tym wykonywanie wyrażeń, agregacji i deduplikacji.
-
Ź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życiuSTREAMsłowa kluczowego przed odwołaniem.Jeśli
table_referencejest widokiem metryki, nie może istnieć żadne inne odwołanie do tabeli w klauzuliFROM. -
Używane w połączeniu z funkcjami generatora, takimi jak
EXPLODE, która generuje tabelę wirtualną zawierającą co najmniej jeden wiersz.LATERAL VIEWstosuje 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
FROMna podstawie podanych predykatów. -
Wyrażenia używane do grupowania wierszy. Jest to używane w połączeniu z funkcjami agregowanymi (
MIN,MAX,COUNT,SUM,AVG) do grupowania wierszy na podstawie wyrażeń grupowania i agregujących wartości w każdej grupie. Gdy klauzulaFILTERjest dołączona do funkcji agregującej, do tej funkcji są przekazywane tylko pasujące wiersze. -
Predykaty, według których wiersze generowane przez
GROUP BYsą filtrowane. KlauzulaHAVINGjest używana do filtrowania wierszy po wykonaniu grupowania. Jeśli określiszHAVINGwartość bezGROUP BY, oznaczaGROUP BYto bez grupowania wyrażeń (agregacja globalna). -
Predykaty używane do filtrowania wyników funkcji okna. Aby użyć
QUALIFY, co najmniej jedna funkcja okna musi być obecna na liście SELECT lub klauzuli QUALIFY.
Typowe warunki błędów
- EXCEPT_OVERLAPPING_COLUMNS
- MISSING_AGGREGATION
- NESTED_AGGREGATE_FUNCTION
- WINDOW_FUNCTION_WITHOUT_OVER_CLAUSE
Wybierz na tabeli Delta
Oprócz standardowych opcji SELECT tabele Delta obsługują opcje podróży czasowej opisane w tej części. Aby uzyskać szczegółowe informacje, zobacz Praca z historią tabel.
Składnia aparatu AS OF
table_identifier TIMESTAMP AS OF timestamp_expression
table_identifier VERSION AS OF version
-
timestamp_expressionmoże być jednym z:-
'2018-10-18T22:15:12.013Z', czyli ciąg, który można rzutować na znacznik czasu cast('2018-10-18 13:36:32 CEST' as timestamp)-
'2018-10-18', czyli ciąg daty current_timestamp() - interval 12 hoursdate_sub(current_date(), 1)- Dowolne inne wyrażenie, które jest lub można rzutować na znacznik czasu
-
-
versionto długa wartość, którą można uzyskać z danych wyjściowych elementuDESCRIBE HISTORY table_spec.
Ani nie timestamp_expressionversion 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 dla tabeli events, określ 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
-- Non-aggregated column without `GROUP BY`.
> SELECT c1, sum(c2) FROM VALUES(1, 2), (1, 3) AS t(c1, c2);
Error: MISSING_AGGREGATION
Powiązane artykuły
- CLUSTER BY klauzula
- typowe wyrażenie tabeli (CTE)
- DISTRIBUTE BY klauzula
- GROUP BY klauzula
- HAVING klauzula
- QUALIFY klauzula
- Wskazówki
- VALUES klauzula
- JOIN
- LATERAL VIEW klauzula
- LIMIT klauzula
- OFFSET klauzula
- ORDER BY klauzula
- PIVOT klauzula
- Zapytanie
- SELECT klauzula
- Ustawianie operatorów
- SORT BY klauzula
- Star, klauzula
- TABLESAMPLE klauzula
- funkcja tabelaryczna (TVF)
- odniesienie do tabeli
- UNPIVOT klauzula
- WHERE klauzula
- WINDOW klauzula
- Funkcje okna