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 ] |
    table_reference JOIN clause |
    table_reference NEAREST BY JOIN clause |
    table_reference PIVOT clause |
    table_reference UNPIVOT clause |
    table_reference MATCH_RECOGNIZE 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 tabellhistorik .

    Om det inte går att hitta tabellen Azure Databricks genererar 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 det inte går att hitta vyn Azure Databricks genererar 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 .

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

  • NÄRMAST EFTER JOIN

    Gäller för:check markerat ja Databricks Runtime 18 och senare

    Note

    Databricks Runtime 18 är nyare än Databricks Runtime 18.0, 18.1 och 18.2. Funktioner som tidigare skulle ha levererats som en senare numrerad version levereras nu som daterade uppdateringar till Databricks Runtime 18 i stället. Mer information finns i Om enhetliga viktig information.

    Returnerar de närmaste matchningarna från en relation per rad i en annan, rangordnad efter ett anpassat avstånd eller likhetsuttryck.

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

  • MATCH_RECOGNIZE

    Gäller för:check markerad ja Databricks SQL-kontroll markerad ja Databricks Runtime 19.0 och senare.

    Söker efter och filtrerar mönster i raderna i föregående table_reference.

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

Vanliga felvillkor

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