SELECTEREN
Van toepassing op: Databricks SQL Databricks Runtime
Hiermee wordt een resultatenset samengesteld uit een of meer tabelverwijzingen.
De SELECT
component kan deel uitmaken van een query die ook algemene tabelexpressies (CTE), setbewerkingen en verschillende andere componenten bevat.
Syntaxis
SELECT [ hints ] [ ALL | DISTINCT ] { named_expression | star_clause } [, ...]
FROM table_reference [, ...]
[ LATERAL VIEW clause ]
[ WHERE clause ]
[ GROUP BY clause ]
[ HAVING clause]
[ QUALIFY clause ]
named_expression
expression [ column_alias ]
star_clause
[ { table_name | view_name } . ] * [ except_clause ]
except_clause
EXCEPT ( { column_name | field_name } [, ...] )
Parameters
-
Hints helpen de Azure Databricks Optimizer betere planningsbeslissingen te nemen. Azure Databricks ondersteunt hints die invloed hebben op de selectie van joinstrategieën en het opnieuw partitioneren van de gegevens.
ALL
Selecteer alle overeenkomende rijen in de tabelverwijzingen. Standaard ingeschakeld.
DUIDELIJK
Selecteer alle overeenkomende rijen uit de tabelverwijzingen nadat u dubbele waarden in de resultaten hebt verwijderd.
named_expression
Een expressie met een optionele toegewezen naam.
-
Een combinatie van een of meer waarden, operators en SQL-functies die een waarde opleveren.
-
Een optionele kolom-id met de naam van het expressieresultaat. Als er geen
column_alias
Databricks SQL is opgegeven, wordt er een afgeleid.
-
-
Een verkorte naam voor alle kolommen waarnaar kan worden verwezen in de
FROM
component of de kolommen of velden van een specifieke tabelreferentie in deFROM
component. -
Een bron van invoer voor de
SELECT
. Deze invoerreferentie kan worden omgezet in een streaming-verwijzing met behulp van hetSTREAM
trefwoord vóór de verwijzing. -
Wordt gebruikt in combinatie met generatorfuncties zoals
EXPLODE
, waarmee een virtuele tabel met een of meer rijen wordt gegenereerd.LATERAL VIEW
past de rijen toe op elke oorspronkelijke uitvoerrij.In Databricks SQL en vanaf Databricks Runtime 12.2 wordt deze component afgeschaft. U moet een generatorfunctie met tabelwaarden aanroepen als een table_reference.
-
Hiermee filtert u het resultaat van de
FROM
component op basis van de opgegeven predicaten. -
De expressies die worden gebruikt om de rijen te groeperen. Dit wordt gebruikt in combinatie met statistische functies (
MIN
,MAX
,COUNT
,SUM
, )AVG
om rijen te groeperen op basis van de groeperingsexpressies en statistische waarden in elke groep. Wanneer eenFILTER
component is gekoppeld aan een statistische functie, worden alleen de overeenkomende rijen doorgegeven aan die functie. -
De predicaten waarop de rijen die door worden geproduceerd
GROUP BY
, worden gefilterd. DeHAVING
component wordt gebruikt om rijen te filteren nadat de groepering is uitgevoerd. Als u zonder opgeeftHAVING
, wordt eenGROUP BY
expressie zonder groepering (globale statistische functie)GROUP BY
aangegeven. -
De predicaten die worden gebruikt om de resultaten van vensterfuncties te filteren. Als u deze functie wilt gebruiken
QUALIFY
, moet ten minste één vensterfunctie aanwezig zijn in de SELECT-lijst of de COMPONENT QUALIFY.
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 tijdstempelcast('2018-10-18 13:36:32 CEST' as timestamp)
'2018-10-18'
, dat wil gezegd, een datumtekenreekscurrent_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
.
version
Geen van beide timestamp_expression
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
-- 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
Verwante artikelen:
- CLUSTER BY-component
- Algemene tabelexpressie (CTE)
- COMPONENT DISTRIBUTE BY
- GROUP BY-component
- HAVING-component
- QUALIFY-component
- Hints
- VALUES-component
- VERBINDEN
- LATERAL VIEW-component
- LIMIT-component
- OFFSET-component
- ORDER BY-component
- PIVOT-component
- Query
- TABLESAMPLE-component
- Operators instellen
- SORT BY-component
- Stercomponent
- Tabelwaarde, functie (TVF)
- tabelreferentie
- UNPIVOT-component
- WHERE-component
- WINDOW-component
- Vensterfuncties