tabellreferens
Gäller för: Databricks SQL 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
-
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: ** Databricks Runtime 16.0 och senare
table_name
kan innehålla en alternativspecifikation. -
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.-
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 som följer
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
. Omtable_alias
innehållercolumn_identifier
måste deras antal matcha antalet kolumner itable_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 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 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 events
anger 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