SELECT

Gilt für:check marked yes Databricks SQL check marked yes 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

    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.

    • expression

      Eine Kombination aus einem oder mehreren Werten, Operatoren und SQL-Funktionen, die als Wert ausgewertet wird.

    • column_alias

      Ein optionaler Spaltenbezeichner, der das Ausdrucksergebnis benennt. Wenn kein column_alias angegeben ist, leitet Databricks SQL einen ab.

  • star_clause

    Eine Abkürzung, um alle referenzierbaren Spalten in der FROM-Klausel oder die Spalten oder Felder eines bestimmten Tabellenverweises in der FROM-Klausel zu benennen.

  • table_reference

    Eine Eingabequelle für SELECT. Dieser Eingabeverweis kann in einen Streamingverweis umgewandelt werden, indem das Schlüsselwort STREAM vor dem Verweis angegeben wird.

  • LATERAL VIEW

    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.

  • WHERE

    Filtert das Ergebnis der FROM-Klausel auf Grundlage der angegebenen Prädikate.

  • GROUP BY

    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 eine FILTER-Klausel an eine Aggregatfunktion angefügt ist, werden nur die übereinstimmenden Zeilen an diese Funktion übergeben.

  • HAVING

    Die Prädikate, nach denen die von GROUP BY erzeugten Zeilen gefiltert werden. Die HAVING-Klausel dient zum Filtern von Zeilen, nachdem die Gruppierung erfolgt ist. Wenn Sie HAVING ohne GROUP BY angeben, wird GROUP BY ohne Gruppierungsausdrücke (globales Aggregat) angegeben.

  • QUALIFY

    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 kann
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18', d. h. eine Datumszeichenfolge
    • current_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 von DESCRIBE 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 delta.`/mnt/delta/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