SELECT
Gilt für: Databricks SQL Databricks Runtime
Erstellt ein Resultset aus einem oder mehreren Tabellenverweisen.
Die SELECT
-Klausel kann Teil einer Abfrage sein, die auch allgemeine Tabellenausdrücke, Mengenoperatoren und verschiedene andere Klauseln enthält.
Syntax
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 } [, ...] )
Parameter
-
Hinweise helfen dem Azure Databricks-Optimierer, bessere Planungsentscheidungen zu treffen. Azure Databricks unterstützt Hinweise, die die Auswahl von Verknüpfungsstrategien und die Neupartitionierung der Daten beeinflussen.
ALL
Wählt alle übereinstimmenden Zeilen aus den Tabellenverweisen aus. Standardmäßig aktiviert.
DISTINCT
Wählt alle übereinstimmenden Zeilen aus den Tabellenverweisen aus, nachdem Duplikate in Ergebnissen entfernt wurden.
named_expression
Ein Ausdruck mit optional zugewiesenem Namen.
-
Eine Kombination aus einem oder mehreren Werten, Operatoren und SQL-Funktionen, die als Wert ausgewertet wird.
-
Ein optionaler Spaltenbezeichner, der das Ausdrucksergebnis benennt. Wenn kein
column_alias
angegeben ist, leitet Databricks SQL einen ab.
-
-
Eine Abkürzung, um alle referenzierbaren Spalten in der
FROM
-Klausel oder die Spalten oder Felder eines bestimmten Tabellenverweises in derFROM
-Klausel zu benennen. -
Eine Eingabequelle für
SELECT
. Dieser Eingabeverweis kann in einen Streamingverweis umgewandelt werden, indem das SchlüsselwortSTREAM
vor dem Verweis angegeben wird. -
Wird in Verbindung mit Generatorfunktionen wie
EXPLODE
verwendet, die eine virtuelle Tabelle mit mindestens einer Zeile generiert.LATERAL VIEW
wendet die Zeilen auf jede ursprüngliche Ausgabezeile an.In Databricks SQL und ab Databricks Runtime 12.2 ist diese Klausel veraltet. Sie sollten eine Tabellenwert-Generatorfunktion als table_reference aufrufen.
-
Filtert das Ergebnis der
FROM
-Klausel auf Grundlage der angegebenen Prädikate. -
Die zum Gruppieren der Zeilen verwendeten Ausdrücke. Wird in Verbindung mit Aggregatfunktionen (
MIN
,MAX
,COUNT
,SUM
,AVG
) verwendet, um Zeilen auf Grundlage der Gruppierungsausdrücke zu gruppieren und Werte in jeder Gruppe zu aggregieren. Wenn eineFILTER
-Klausel an eine Aggregatfunktion angefügt ist, werden nur die übereinstimmenden Zeilen an diese Funktion übergeben. -
Die Prädikate, nach denen die von
GROUP BY
erzeugten Zeilen gefiltert werden. DieHAVING
-Klausel dient zum Filtern von Zeilen, nachdem die Gruppierung erfolgt ist. Wenn SieHAVING
ohneGROUP BY
angeben, wirdGROUP BY
ohne Gruppierungsausdrücke (globales Aggregat) angegeben. -
Die Prädikate, die zum Filtern der Ergebnisse von Fensterfunktionen verwendet werden. Um
QUALIFY
verwenden zu können, muss mindestens eine Fensterfunktion in der SELECT-Liste oder der QUALIFY-Klausel vorhanden sein.
SELECT für Delta-Tabelle
Zusätzlich zu den standardmäßigen SELECT
-Optionen unterstützen Delta-Tabellen die in diesem Abschnitt beschriebenen Zeitreiseoptionen. Weitere Informationen finden Sie unter Arbeiten mit dem Delta Lake-Tabellenverlauf.
Syntax von AS OF
table_identifier TIMESTAMP AS OF timestamp_expression
table_identifier VERSION AS OF version
timestamp_expression
kann einen der folgenden Werte annehmen:'2018-10-18T22:15:12.013Z'
, d. h. eine Zeichenfolge, die in einen Zeitstempel umgewandelt werden kanncast('2018-10-18 13:36:32 CEST' as timestamp)
'2018-10-18'
, d. h. eine Datumszeichenfolgecurrent_timestamp() - interval 12 hours
date_sub(current_date(), 1)
- Jeder andere Ausdruck, der ein Zeitstempel ist oder in einen Zeitstempel umgewandelt werden kann
version
ist ein LONG-Wert, der aus der Ausgabe vonDESCRIBE HISTORY table_spec
abgerufen werden kann.
Weder timestamp_expression
noch version
können Unterabfragen sein.
Beispiel
> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'
> SELECT * FROM events VERSION AS OF 123
Syntax @
Verwenden Sie die @
-Syntax, um Zeitstempel oder Version anzugeben. Der Zeitstempel muss im Format yyyyMMddHHmmssSSS
vorliegen. Sie können eine Version nach @
angeben, indem Sie der Version v
voranstellen. Um z. B. Version 123
für die Tabelle events
abzufragen, geben Sie events@v123
an.
Beispiel
> SELECT * FROM events@20190101000000000
> SELECT * FROM events@v123
Beispiele
-- 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
Verwandte Artikel
- CLUSTER BY-Klausel
- Allgemeine Tabellenausdrücke (CTE, Common Table Expression)
- DISTRIBUTE BY-Klausel
- GROUP BY-Klausel
- HAVING-Klausel
- QUALIFY-Klausel
- Hinweise
- VALUES-Klausel
- JOIN
- LATERAL VIEW-Klausel
- LIMIT-Klausel
- OFFSET-Klausel
- ORDER BY-Klausel
- PIVOT-Klausel
- Abfrage
- TABLESAMPLE-Klausel
- Mengenoperatoren
- SORT BY-Klausel
- Star clause
- Tabellenwertfunktion
- Tabellenverweis
- UNPIVOT-Klausel
- WHERE-Klausel
- WINDOW-Klausel
- Fensterfunktionen