SELECT

Si applica a:check marked yes Databricks SQL check marked yes 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

  • Suggerimenti

    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.

    • 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 FROM clausola o le colonne o i campi di un riferimento di tabella specifico nella FROM clausola .

  • 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.

  • VISUALIZZAZIONE LATERALE

    Usato insieme a funzioni del generatore, ad EXPLODEesempio , 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.

  • 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, COUNTSUM, , ) AVGper 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).

  • QUALIFICARSI

    Predicati utilizzati per filtrare i risultati delle funzioni finestra. Per usare QUALIFY, è necessario che almeno una funzione window sia presente nell'elenco edizione Standard LECT 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 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 delta.`/mnt/delta/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