Tabellenverweis
Gilt für: Databricks SQL Databricks Runtime
Ein Tabellenverweis ist eine Zwischenergebnistabelle in SQL. Sie kann von anderen Operatoren wie Funktionen, Joins oder einer Unterabfrage abgeleitet werden, direkt auf eine Basistabelle verweisen oder als Inlinetabelle erstellt werden.
Syntax
table_reference
{ table_name [ TABLESAMPLE clause ] [ table_alias ] |
{ STREAM table_name [ table_alias ] | STREAM ( table_name ) [ table_alias ] } |
view_name [ table_alias ] |
JOIN clause |
PIVOT clause |
UNPIVOT clause |
[ STREAM ] table_valued_function [ table_alias ] |
[ LATERAL ] table_valued_function [ table_alias ] |
VALUES clause |
[ LATERAL ] ( query ) [ TABLESAMPLE clause ] [ table_alias ] }
Parameter
-
Bestimmt eine Tabelle, die eine temporale Spezifikation enthalten kann. Weitere Informationen finden Sie unter Verwenden des Delta Lake-Tabellenverlaufs.
Wenn die Tabelle nicht gefunden werden kann, löst Azure Databricks den Fehler TABLE_OR_VIEW_NOT_FOUND aus.
Siehe Auflösung von Spalten, Feldern, Parametern und Variablen für weitere Informationen zur Namensauflösung.
Gilt für: ** Databricks SQL Databricks Runtime 16.0 und höher
table_name
kann eine Optionsspezifikation enthalten. -
Gibt eine Sicht oder einen allgemeinen Tabellenausdruck (Common Table Expression, CTE) an. Wenn die Sicht nicht gefunden werden kann, löst Azure Databricks den Fehler TABLE_OR_VIEW_NOT_FOUND aus.
Siehe Auflösung von Spalten, Feldern, Parametern und Variablen für weitere Informationen zur Namensauflösung.
STREAM
Gibt eine Tabelle oder eine Tabellenwertfunktion als Streamingquelle zurück. Tabellen können nicht mit einer temporalen Spezifikation bereitgestellt werden, wenn sie mit dem Schlüsselwort
STREAM
verwendet werden. Streamingquellen werden am häufigsten in den Definitionen von Streamingtabellen verwendet.-
Kombiniert zwei oder mehr Beziehungen mithilfe eines Joins.
-
Gilt für: Databricks SQL Databricks Runtime 12.2 LTS und höher.
Wird für die Datenperspektive verwendet. Sie können die aggregierten Werte basierend auf einem bestimmten Spaltenwert abrufen.
Vor Databricks Runtime 12.0 ist PIVOT nach der
FROM
-Klausel auf SELECT beschränkt. -
Gilt für: Databricks SQL Databricks Runtime 12.2 LTS und höher.
Wird für die Datenperspektive verwendet. Sie können mehrere Spaltengruppen in Zeilen aufteilen.
[LATERAL] table_valued_function_invocation
Ruft eine Tabellenwertfunktion auf. Um auf Spalten zu verweisen, die durch ein vorhergehendes
table_reference
in derselbenFROM
-Klausel verfügbar gemacht wurden, müssen SieLATERAL
angeben.-
Gibt eine Inlinetabelle an.
[LATERAL] ( query )
Berechnet einen Tabellenverweis mithilfe einer Abfrage. Eine Abfrage mit dem Präfix
LATERAL
kann auf Spalten verweisen, die durch ein vorherigestable_reference
in derselbenFROM
-Klausel verfügbar gemacht werden. Ein solches Konstrukt wird als korrelierte oder abhängige Abfrage bezeichnet.-
Reduzieren Sie optional die Größe des Resultsets, indem Sie nur für einen Bruchteil der Zeilen eine Stichprobenentnahme durchführen.
-
Gibt optional eine Bezeichnung für das
table_reference
an. Wenn dietable_alias
column_identifier
-Instanzen enthält, muss deren Anzahl mit der Anzahl der Spalten imtable_reference
übereinstimmen.
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
-- Return a data set from a storage location using a credential.
> SELECT * FROM `csv`.`spreadsheets/data.csv` WITH(CREDENTIAL some_credential);
-- Select from a jdbc data source while controlling the fetch size.
> SELECT * FROM jdbcTable WITH(fetchSize = 0);
-- 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