SELECT (selezione secondaria)
Si applica a: Databricks SQL
Databricks Runtime
Compone un insieme di risultati da uno o più riferimenti di tabella .
La clausola SELECT
può far parte di una query che include anche espressioni di tabella comuni (CTE), operazioni set e varie altre clausole.
Sintassi
SELECT 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 } [, ...] )
Parametri
-
Raccoglie le colonne da restituire dalla sottoquery, inclusa l'esecuzione di espressioni, aggregazioni e deduplicazione.
-
Origine di input per l'oggetto
SELECT
. Questo riferimento di input può essere trasformato in un riferimento di streaming usando laSTREAM
parola chiave prima del riferimento. -
Usato insieme a funzioni del generatore, ad esempio
EXPLODE
, che genera una tabella virtuale contenente una o più righe.LATERAL VIEW
applica le righe a ogni riga di output originale.In Databricks SQL e a partire da Databricks Runtime 12.2 questa clausola è deprecata. È necessario richiamare una funzione generatore con valori di tabella come table_reference.
-
Filtra il risultato della
FROM
clausola in base ai predicati forniti. -
Espressioni utilizzate per raggruppare le righe. Viene usato insieme alle funzioni di aggregazione (
MIN
,MAX
,COUNT
,SUM
,AVG
) per raggruppare le righe in base alle espressioni di raggruppamento e ai valori aggregati in ogni gruppo. Quando unaFILTER
clausola è associata a una funzione di aggregazione, solo le righe corrispondenti vengono passate a tale funzione. -
Predicati in base ai quali vengono filtrate le righe generate da
GROUP BY
. LaHAVING
clausola viene utilizzata per filtrare le righe dopo l'esecuzione del raggruppamento. Se si specificaHAVING
senzaGROUP BY
, indica un oggettoGROUP BY
senza raggruppamento di espressioni (aggregazione globale). -
Predicati utilizzati per filtrare i risultati delle funzioni finestra. Per usare
QUALIFY
, è necessario che almeno una funzione finestra sia presente nell'elenco SELECT o nella clausola QUALIFY.
Selezionare la tabella Delta
Oltre alle opzioni standard di SELECT
, le tabelle Delta supportano le opzioni di viaggio del tempo descritte in questa sezione. Per informazioni dettagliate, vedere Lavorare con la cronologia delle tabelle Delta Lake.
Sintassi AS OF
table_identifier TIMESTAMP AS OF timestamp_expression
table_identifier VERSION AS OF version
-
timestamp_expression
può essere uno qualsiasi di:-
'2018-10-18T22:15:12.013Z'
ovvero una stringa di cui è possibile eseguire il cast a un timestamp cast('2018-10-18 13:36:32 CEST' as timestamp)
-
'2018-10-18'
, ovvero una stringa di data current_timestamp() - interval 12 hours
date_sub(current_date(), 1)
- Qualsiasi altra espressione che è o può essere eseguita il cast a un timestamp
-
-
version
è un valore long che può essere ottenuto dall'output diDESCRIBE HISTORY table_spec
.
Né timestamp_expression
né version
possono essere sottoquery.
Esempio
> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'
> SELECT * FROM events VERSION AS OF 123
Sintassi @
Usare la @
sintassi per specificare il timestamp o la versione. Il timestamp deve essere in yyyyMMddHHmmssSSS
formato . È possibile specificare una versione dopo @
anteponendo una v
alla versione. Ad esempio, per eseguire una query sulla versione 123
per la tabella events
, specificare events@v123
.
Esempio
> SELECT * FROM events@20190101000000000
> SELECT * FROM events@v123
Esempi
-- 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
Articoli correlati
- CLUSTER BY clausola
- CTE (Common Table Expression)
- DISTRIBUTE BY clausola
- GROUP BY clausola
- HAVING clausola
- QUALIFY clausola
- Hint
- VALUES clausola
- JOIN
- LATERAL VIEW clausola
- LIMIT clausola
- OFFSET clausola
- ORDER BY clausola
- PIVOT clausola
- Query
- SELECT clausola
- Impostare operatori
- SORT BY clausola
- Clausola Star
- TABLESAMPLE clausola
- funzione con valori di tabella (TVF)
- riferimento alla tabella
- UNPIVOT clausola
- WHERE clausola
- WINDOW clausola
- funzioni finestra