VÝBĚR
Platí pro: Databricks SQL Databricks Runtime
Vytvoří sadu výsledků z jednoho nebo více odkazů na tabulku.
Klauzule SELECT
může být součástí dotazu, který obsahuje také běžné výrazy tabulek (CTE), operace set a různé další klauzule.
Syntaxe
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 } [, ...] )
Parametry
-
Rady pomáhají optimalizátoru Azure Databricks lépe rozhodovat o plánování. Azure Databricks podporuje rady, které ovlivňují výběr strategií spojení a opětovné rozdělení dat.
ALL
Vyberte všechny odpovídající řádky z odkazů na tabulku. Ve výchozím nastavení povolena.
ZŘETELNÝ
Po odebrání duplicit ve výsledcích vyberte všechny odpovídající řádky z odkazů na tabulku.
named_expression
Výraz s volitelným přiřazeným názvem.
-
Kombinace jedné nebo více hodnot, operátorů a funkcí SQL, které se vyhodnotí jako hodnota.
-
Volitelný identifikátor sloupce určující název výsledku výrazu. Pokud není k dispozici databricks
column_alias
SQL, odvozuje ho.
-
-
Zkratka pro pojmenování všech odkazovatelných sloupců v
FROM
klauzuli nebo konkrétních sloupců nebo polích odkazu naFROM
tabulku v klauzuli. -
Zdroj vstupu pro
SELECT
. Tento vstupní odkaz lze převést na odkaz streamování pomocí klíčovéhoSTREAM
slova před odkazem. -
Používá se ve spojení s funkcemi generátoru, jako
EXPLODE
je například , která generuje virtuální tabulku obsahující jeden nebo více řádků.LATERAL VIEW
použije řádky na každý původní výstupní řádek.V Databricks SQL a počínaje Databricks Runtime 12.2 je tato klauzule zastaralá. Jako table_reference byste měli vyvolat funkci generátoru s hodnotami tabulky.
-
Filtruje výsledek klauzule na základě zadaných
FROM
predikátů. -
Výrazy, které se používají k seskupení řádků. Používá se ve spojení s agregačními funkcemi (
MIN
,MAX
,COUNT
SUM
, ),AVG
k seskupení řádků na základě výrazů seskupení a agregace hodnot v každé skupině.FILTER
Pokud je klauzule připojená k agregační funkci, předají se této funkci pouze odpovídající řádky. -
Predikáty, podle kterých jsou řádky vytvořené filtrem
GROUP BY
. KlauzuleHAVING
slouží k filtrování řádků po provedení seskupení. Pokud zadáteHAVING
bezGROUP BY
, znamenáGROUP BY
to bez seskupení výrazů (globální agregace). -
Predikáty, které slouží k filtrování výsledků funkcí okna. Chcete-li použít
QUALIFY
, musí být v seznamu SELECT nebo klauzuli QUALIFY přítomna alespoň jedna funkce okna.
Výběr v tabulce Delta
Kromě standardních SELECT
možností tabulky Delta podporují možnosti časového cestování popsané v této části. Podrobnosti najdete v tématu Práce s historií tabulek Delta Lake.
Syntaxe AS OF
table_identifier TIMESTAMP AS OF timestamp_expression
table_identifier VERSION AS OF version
timestamp_expression
může být libovolná z těchto možností:'2018-10-18T22:15:12.013Z'
to znamená řetězec, který lze přetypovat na časové razítko.cast('2018-10-18 13:36:32 CEST' as timestamp)
'2018-10-18'
to znamená řetězec kalendářního data.current_timestamp() - interval 12 hours
date_sub(current_date(), 1)
- Jakýkoli jiný výraz, který je nebo lze přetypovat na časové razítko
version
je dlouhá hodnota, kterou lze získat z výstupuDESCRIBE HISTORY table_spec
.
version
Ani timestamp_expression
nemůže být poddotaz.
Příklad
> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'
> SELECT * FROM events VERSION AS OF 123
Syntaxe @
@
Pomocí syntaxe zadejte časové razítko nebo verzi. Časové razítko musí být ve yyyyMMddHHmmssSSS
formátu. Verzi @
můžete zadat tak, že ji předejdete v
. Pokud chcete například zadat dotaz na verzi 123
tabulky events
, zadejte events@v123
.
Příklad
> SELECT * FROM events@20190101000000000
> SELECT * FROM events@v123
Příklady
-- 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
Související články
- Klauzule CLUSTER BY
- Common table expression (CTE)
- Klauzule DISTRIBUTE BY
- Klauzule GROUP BY
- Klauzule HAVING
- Klauzule QUALIFY
- Rady
- Klauzule VALUES
- PŘIPOJIT
- Klauzule LATERAL VIEW
- KLAUZULE LIMIT
- Klauzule OFFSET
- Klauzule ORDER BY
- Klauzule PIVOT
- Dotaz
- Klauzule TABLESAMPLE
- Nastavit operátory
- Klauzule SORT BY
- Klauzule Star
- Funkce s hodnotou tabulky (TVF)
- Referenční informace k tabulce
- Klauzule UNPIVOT
- Klauzule WHERE
- Klauzule WINDOW
- Funkce okna