tabelreferentie
Van toepassing op: Databricks SQL 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
-
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 .
Van toepassing op: ** Databricks Runtime 16.0 en hoger
table_name
kan een specificatie van opties bevatten. -
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.-
Combineert twee of meer relaties met behulp van een join.
-
Van toepassing op: Databricks SQL 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. -
Van toepassing op: Databricks SQL 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 dezelfdeFROM
component, moet u opgevenLATERAL
.-
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 voorgaandetable_reference
in dezelfdeFROM
component. Een dergelijke constructie wordt een gecorreleerde of afhankelijke query genoemd.-
U kunt eventueel de grootte van de resultatenset verkleinen door alleen een fractie van de rijen te nemen.
-
Geef desgewenst een label op voor de
table_reference
. Als hettable_alias
aantal insluitingencolumn_identifier
overeenkomt met het aantal kolommen in detable_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 vanDESCRIBE HISTORY table_spec
.
timestamp_expression
Geen van beide version
subquery's.
Opmerking
> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'
> SELECT * FROM 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@v123
op.
Opmerking
> SELECT * FROM events@20190101000000000
> SELECT * FROM events@v123
Voorbeelden
-- 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