Dela via


tabellreferens

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime

En tabellreferens är en mellanliggande resultattabell i SQL. Det kan vara härledd från andra operatorer, till exempel funktioner, kopplingar eller en underfråga, referera till en bastabell direkt eller konstrueras som en infogad tabell.

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

Parametrar

  • table_name

    Identifierar en tabell som kan innehålla en temporal specifikation. Mer information finns i Arbeta med Delta Lake-tabellhistorik.

    Om det inte går att hitta tabellen skapar Azure Databricks ett TABLE_OR_VIEW_NOT_FOUND fel.

    För mer information om namnupplösning, se upplösningen för kolumn, fält, parameter och variabel i .

    Gäller för: ** kontrollera markerat ja Databricks Runtime 16.0 och senare

    table_name kan innehålla en alternativspecifikation.

  • view_name

    Identifierar en vy eller ett gemensamt tabelluttryck (CTE). Om vyn inte kan hittas genererar Azure Databricks ett TABLE_OR_VIEW_NOT_FOUND fel.

    För mer information om namnupplösning, se kolumn-, fält-, parameter- och variabelupplösning.

  • STRÖM

    Returnerar en tabell eller en tabellvärdesfunktion som en strömmande källa. Tabeller kan inte anges med en temporal specifikation när de används med nyckelordet STREAM. Strömmande källor används oftast i definitionerna av strömmande tabeller.

  • JOIN

    Kombinerar två eller flera relationer med hjälp av en koppling.

  • PIVOT

    Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 12.2 LTS och senare.

    Används för dataperspektiv; du kan hämta de aggregerade värdena baserat på ett specifikt kolumnvärde.

    Före Databricks Runtime 12.0 är PIVOT begränsad till SELECT som följer FROM-satsen.

  • UNPIVOT

    Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 12.2 LTS och senare.

    Används för dataperspektiv; du kan dela upp flera kolumngrupper i rader.

  • [LATERAL]table_valued_function_invocation

    Anropar en tabellvärdesfunktion. Om du vill referera till kolumner som exponeras av en föregående table_reference i samma FROM-sats måste du ange LATERAL.

  • VALUES

    Definierar en infogad tabell.

  • [LATERAL] ( fråga )

    Beräknar en tabellreferens med hjälp av en fråga. En fråga som föregås av LATERAL kan referera till kolumner som exponeras av en föregående table_reference i samma FROM-sats. En sådan konstruktion kallas för en korrelerad eller beroende fråga.

  • TABLESAMPLE

    Du kan också minska storleken på resultatuppsättningen genom att bara ta en bråkdel av raderna.

  • table_alias

    Du kan också ange en etikett för table_reference. Om table_alias innehåller column_identifiermåste deras antal matcha antalet kolumner i table_reference.

Välj i Delta-tabellen

Förutom standardalternativen för SELECT stöder Delta-tabeller de tidsresealternativ som beskrivs i det här avsnittet. Mer information finns i Arbeta med Delta Lake-tabellhistorik.

AS OF syntax

table_identifier TIMESTAMP AS OF timestamp_expression

table_identifier VERSION AS OF version
  • timestamp_expression kan vara något av följande:
    • '2018-10-18T22:15:12.013Z', det vill: en sträng som kan gjutas till en tidsstämpel
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18', det vill: en datumsträng
    • current_timestamp() - interval 12 hours
    • date_sub(current_date(), 1)
    • Andra uttryck som är eller kan gjutas till en tidsstämpel
  • version är ett långt värde som kan hämtas från utdata DESCRIBE HISTORY table_specfrån .

Varken timestamp_expression eller version kan vara underfrågor.

Exempel

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

> SELECT * FROM events VERSION AS OF 123

@ syntax

Använd syntaxen @ för att ange tidsstämpeln eller versionen. Tidsstämpeln måste vara i yyyyMMddHHmmssSSS format. Du kan ange en version efter @ genom att lägga till en v till versionen. Om du till exempel vill fråga version 123 för tabellen eventsanger du events@v123.

Exempel

> SELECT * FROM events@20190101000000000

> SELECT * FROM events@v123

Exempel


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