Condividi tramite


SELECT

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì 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 [ 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

  • Suggerimenti

    Gli hint consentono all'ottimizzatore di Azure Databricks di prendere decisioni di pianificazione migliori. Azure Databricks supporta gli 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.

    • expression

      Combinazione di uno o più valori, operatori e funzioni SQL che restituiscono un valore.

    • column_alias

      Identificatore di colonna facoltativo che denomina il risultato dell'espressione. Se databricks SQL non column_alias ne deriva uno.

  • star_clause

    Una sintassi abbreviata per denominare tutte le colonne a cui è possibile fare riferimento nella clausola FROM o le colonne o i campi di un riferimento di tabella specifico nella clausola FROM.

  • table_reference

    Origine di input per l'oggetto SELECT. Questo riferimento di input può essere trasformato in un riferimento di streaming usando la STREAM parola chiave prima del riferimento.

  • LATERAL VIEW

    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.

  • WHERE

    Filtra il risultato della FROM clausola in base ai predicati forniti.

  • GROUP BY

    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 una FILTER clausola è associata a una funzione di aggregazione, solo le righe corrispondenti vengono passate a tale funzione.

  • HAVING

    Predicati in base ai quali vengono filtrate le righe generate da GROUP BY . La HAVING clausola viene utilizzata per filtrare le righe dopo l'esecuzione del raggruppamento. Se si specifica HAVING senza GROUP BY, indica un oggetto GROUP BY senza raggruppamento di espressioni (aggregazione globale).

  • QUALIFY

    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 di DESCRIBE HISTORY table_spec.

timestamp_expressionversion 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