Delen via


tabelreferentie

Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

Een tabelreferentie is een tussenliggende resultaattabel in SQL. Het kan worden afgeleid van andere operators, zoals functies, joins of een subquery, rechtstreeks verwijzen naar een basistabel of worden samengesteld als een inlinetabel.

Syntaxis

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 ] }

Parameters

  • table_name

    Identificeert een tabel die een tijdelijke specificatie kan bevatten. Zie De tabelgeschiedenis van Delta Lake voor meer informatie.

    Als de tabel niet kan worden gevonden, genereert Azure Databricks een TABLE_OR_VIEW_NOT_FOUND fout.

    Zie Kolom-, veld-, parameter- en variabeleomzetting voor meer informatie over naamomzetting .

  • view_name

    Identificeert een weergave of een algemene tabelexpressie (CTE). Als de weergave niet kan worden gevonden, wordt er een TABLE_OR_VIEW_NOT_FOUND fout gegenereerd in Azure Databricks.

    Zie Kolom-, veld-, parameter- en variabeleomzetting voor meer informatie over naamomzetting .

  • STROOM

    Retourneert een tabel- of tabelwaardefunctie als streamingbron. Tabellen kunnen niet worden geleverd met een tijdelijke specificatie wanneer ze worden gebruikt met het STREAM trefwoord. Streamingbronnen worden het meest gebruikt in de definities van streamingtabellen.

  • VERBINDEN

    Combineert twee of meer relaties met behulp van een join.

  • DRAAIEN

    Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 12.2 LTS en hoger.

    Wordt gebruikt voor gegevensperspectief; u kunt de geaggregeerde waarden ophalen op basis van een specifieke kolomwaarde.

    Vóór Databricks Runtime 12.0 PIVOT is beperkt tot SELECT na de FROM component.

  • DRAAITABEL OPHEFFEN

    Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 12.2 LTS en hoger.

    Wordt gebruikt voor gegevensperspectief; u kunt meerdere kolomgroepen splitsen in rijen.

  • [LATERAL] table_valued_function_invocation

    Roept een tabelwaardefunctie aan. Als u wilt verwijzen naar kolommen die worden weergegeven door een voorgaande table_reference in dezelfde FROM component, moet u opgeven LATERAL.

  • WAARDEN

    Hiermee definieert u een inlinetabel.

  • [LATERAL] ( query )

    Berekent een tabelreferentie met behulp van een query. Een query die wordt voorafgegaan door LATERAL , kan verwijzen naar kolommen die worden weergegeven door een voorgaande table_reference in dezelfde FROM component. Een dergelijke constructie wordt een gecorreleerde of afhankelijke query genoemd.

  • TABLESAMPLE

    U kunt eventueel de grootte van de resultatenset verkleinen door alleen een fractie van de rijen te nemen.

  • table_alias

    Geef desgewenst een label op voor de table_reference. Als het table_alias aantal insluitingen column_identifierovereenkomt met het aantal kolommen in de table_reference.

Selecteren in Delta-tabel

Naast de standaardopties SELECT ondersteunen Delta-tabellen de opties voor tijdreizen die in deze sectie worden beschreven. Zie Werken met Delta Lake-tabelgeschiedenis voor meer informatie.

AS OF syntaxis

table_identifier TIMESTAMP AS OF timestamp_expression

table_identifier VERSION AS OF version
  • timestamp_expression kan een van de volgende zijn:
    • '2018-10-18T22:15:12.013Z', dat wil gezegd, een tekenreeks die kan worden gecast naar een tijdstempel
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18', dat wil gezegd, een datumtekenreeks
    • current_timestamp() - interval 12 hours
    • date_sub(current_date(), 1)
    • Elke andere expressie die wel of niet kan worden omgezet in een tijdstempel
  • version is een lange waarde die kan worden verkregen uit de uitvoer van DESCRIBE HISTORY table_spec.

version Geen van beide timestamp_expression subquery's.

Opmerking

> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'

> SELECT * FROM delta.`/mnt/delta/events` VERSION AS OF 123

@ syntaxis

Gebruik de @ syntaxis om de tijdstempel of versie op te geven. De tijdstempel moet een yyyyMMddHHmmssSSS indeling hebben. U kunt een versie opgeven nadat @ u een v versie wilt toevoegen aan de versie. Als u bijvoorbeeld een query wilt uitvoeren op de versie 123 van de tabel events, geeft u events@v123op.

Opmerking

> SELECT * FROM events@20190101000000000

> SELECT * FROM events@v123

Voorbeelden

-- 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