SELECT
Si applica a: Databricks SQL Databricks Runtime
Compone un set di risultati da uno o più riferimenti a tabelle.
La SELECT
clausola può far parte di una query che include anche espressioni di tabella comuni (CTE), operazioni set e varie altre clausole.
Sintassi
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 } [, ...] )
Parametri
-
Gli hint consentono all'ottimizzatore di Azure Databricks di prendere decisioni di pianificazione migliori. Azure Databricks supporta hint che influenzano la selezione delle strategie di join e la ripartizione dei dati.
ALL
Selezionare tutte le righe corrispondenti nei riferimenti alla tabella. Abilitato per impostazione predefinita.
DISTINCT
Selezionare tutte le righe corrispondenti dai riferimenti alla tabella dopo la rimozione dei duplicati nei risultati.
named_expression
Espressione con un nome assegnato facoltativo.
-
Combinazione di uno o più valori, operatori e funzioni SQL che restituiscono un valore.
-
Identificatore di colonna facoltativo che denomina il risultato dell'espressione. Se databricks SQL non
column_alias
ne deriva uno.
-
-
Una sintassi abbreviata per denominare tutte le colonne a cui è possibile fare riferimento nella
FROM
clausola o le colonne o i campi di un riferimento di tabella specifico nellaFROM
clausola . -
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
EXPLODE
esempio , 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. È consigliabile 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 SELECT
, le tabelle Delta supportano le opzioni di viaggio del tempo descritte in questa sezione. Per informazioni dettagliate, vedere Usare 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 timestampcast('2018-10-18 13:36:32 CEST' as timestamp)
'2018-10-18'
, ovvero una stringa di datacurrent_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
- Clausola CLUSTER BY
- Espressione di tabella comune (CTE)
- Clausola DISTRIBUTE BY
- Clausola GROUP BY
- Clausola HAVING
- Clausola QUALIFY
- Hint
- Clausola VALUES
- JOIN
- Clausola LATERAL VIEW
- Clausola LIMIT
- Clausola OFFSET
- Clausola ORDER BY
- Clausola PIVOT
- Query
- Clausola TABLESAMPLE
- Operatori set
- Clausola SORT BY
- Clausola Star
- Funzione con valori di tabella (TVF)
- riferimento alla tabella
- Clausola UNPIVOT
- Clausola WHERE
- Clausola WINDOW
- Funzioni finestra