Freigeben über


Tabellenverweis

Gilt für: durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert 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

  • table_name

    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: ** Häkchen gesetzt ja Databricks SQL Häkchen gesetzt ja Databricks Runtime 16.0 und höher

    table_name kann eine Optionsspezifikation enthalten.

  • view_name

    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.

  • JOIN

    Kombiniert zwei oder mehr Beziehungen mithilfe eines Joins.

  • PIVOT

    Gilt für: Häkchen ja Databricks SQL Häkchen bei ja 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.

  • UNPIVOT

    Gilt für: Häkchen ja Databricks SQL Häkchen bei ja 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 derselben FROM-Klausel verfügbar gemacht wurden, müssen Sie LATERAL angeben.

  • VALUES

    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 vorheriges table_reference in derselben FROM-Klausel verfügbar gemacht werden. Ein solches Konstrukt wird als korrelierte oder abhängige Abfrage bezeichnet.

  • TABLESAMPLE

    Reduzieren Sie optional die Größe des Resultsets, indem Sie nur für einen Bruchteil der Zeilen eine Stichprobenentnahme durchführen.

  • table_alias

    Gibt optional eine Bezeichnung für das table_reference an. Wenn die table_aliascolumn_identifier-Instanzen enthält, muss deren Anzahl mit der Anzahl der Spalten im table_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 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 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