tabellreferens
Gäller för: Databricks SQL Databricks Runtime
En tabellreferens är en mellanliggande resultattabell i SQL. Den kan härledas 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
-
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.
Mer information om namnmatchning finns i Kolumn, fält, parameter och variabelmatchning .
-
Identifierar en vy eller ett gemensamt tabelluttryck (CTE). Om vyn inte kan hittas genererar Azure Databricks ett TABLE_OR_VIEW_NOT_FOUND fel.
Mer information om namnmatchning finns i Kolumn, fält, parameter och variabelmatchning .
STREAM
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.-
Kombinerar två eller flera relationer med hjälp av en koppling.
-
Gäller för: Databricks SQL 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 enligt
FROM
satsen. -
Gäller för: Databricks SQL 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 sammaFROM
sats måste du angeLATERAL
.-
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åendetable_reference
i sammaFROM
sats. En sådan konstruktion kallas för en korrelerad eller beroende fråga.-
Du kan också minska storleken på resultatuppsättningen genom att bara ta en bråkdel av raderna.
-
Du kan också ange en etikett för
table_reference
. Om inkluderartable_alias
column_identifier
deras antal måste matcha antalet kolumner itable_reference
.
Välj i Delta-tabellen
Förutom standardalternativen 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ämpelcast('2018-10-18 13:36:32 CEST' as timestamp)
'2018-10-18'
, det vill: en datumsträngcurrent_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 utdataDESCRIBE HISTORY table_spec
frå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 delta.`/mnt/delta/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 efter versionen 123
för tabellen events
anger du events@v123
.
Exempel
> SELECT * FROM events@20190101000000000
> SELECT * FROM events@v123
Exempel
-- 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