SELECT
S’applique à : Databricks SQL Databricks Runtime
Composez un résultat SELECT
peut faire partie d’une requête qui inclut également des expressions de table courantes (CTE), des opérations set et d’autres clauses.
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 } [, ...] )
Parameters
-
Les conseils permettent à l’optimiseur d’Azure Databricks de prendre de meilleures décisions en matière de planification. Azure Databricks prend en charge des conseils qui influencent la sélection des stratégies de join et le repartitionnement des données.
ALL
Select toutes les lignes correspondantes des références table. Option activée par défaut.
DISTINCT
Select toutes les lignes correspondantes de la référence de table après avoir supprimé les doublons dans les résultats.
named_expression
Expression avec un nom affecté facultatif.
-
Une combinaison d'une ou plusieurs fonctions values, d'opérateurs et de fonctions SQL qui s'évalue à une valeur.
-
Un columnidentifier facultatif nommant le résultat de l’expression. Si aucun
column_alias
n’est fourni, Databricks SQL en dérive un.
-
-
Un raccourci pour nommer toutes les columns référençables dans la clause
FROM
, ou une référence table spécifique columns ou des champs dans la clauseFROM
. -
Source d’entrée pour le
SELECT
. Cette référence d’entrée peut être transformée en référence de diffusion en continu en utilisant le mot cléSTREAM
avant la référence. -
Utilisé conjointement avec les fonctions de générateur telles que
EXPLODE
, qui génère une table virtuelle contenant une ou plusieurs lignes.LATERAL VIEW
applique les lignes à chaque ligne de sortie d’origine.Dans Databricks SQL, et à compter de Databricks Runtime 12.2, cette clause est déconseillée. Vous devez appeler une fonction de générateur évaluée par la table en tant que table_reference.
-
Filtre le résultat de la clause
FROM
en fonction des prédicats fournis. -
Expressions utilisées pour regrouper les lignes. Utilisé conjointement avec les fonctions d’agrégation (
MIN
,MAX
,COUNT
,SUM
,AVG
) pour regrouper des lignes en fonction des expressions de regroupement et des values agrégées dans chaque groupe. Lorsqu’une clauseFILTER
est attachée à une fonction d’agrégation, seules les lignes correspondantes sont transmises à cette fonction. -
Prédicats par lesquels les lignes produites par
GROUP BY
sont filtrées. La clauseHAVING
permet de filtrer les lignes après l’exécution du regroupement. Si vous spécifiezHAVING
sansGROUP BY
, il indiqueGROUP BY
sans expressions de regroupement (agrégat global). -
Prédicats utilisés pour filtrer les résultats des fonctions window. Pour utiliser
QUALIFY
, au moins une fonction window doit être présente dans la clause SELECTlist ou QUALIFY.
Select sur Delta table
En plus des options de SELECT
standard, Delta tables prend en charge les options de voyage dans le temps décrites dans cette section. Pour plus d’informations, consultez Utiliser l’historique des tableDelta.
Syntaxe de AS OF
table_identifier TIMESTAMP AS OF timestamp_expression
table_identifier VERSION AS OF version
timestamp_expression
peut être n’importe quel :'2018-10-18T22:15:12.013Z'
, autrement dit, une chaîne qui peut être convertie en horodateurcast('2018-10-18 13:36:32 CEST' as timestamp)
'2018-10-18'
, autrement dit, une chaîne de datecurrent_timestamp() - interval 12 hours
date_sub(current_date(), 1)
- Toute autre expression qui est ou qui peut être castée en un timestamp
version
est une valeur de type long qui peut être obtenue à partir de la sortie deDESCRIBE HISTORY table_spec
.
Ni timestamp_expression
ni version
ne peuvent être des sous-requêtes.
Exemple
> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'
> SELECT * FROM events VERSION AS OF 123
Syntaxe de @
Utilisez la syntaxe @
pour spécifier le timestamp ou la version. Le timestamp doit être au format yyyyMMddHHmmssSSS
. Vous pouvez spécifier une version après @
en ajoutant v
à la version. Par exemple, pour interroger la version 123
pour le tableevents
, spécifiez events@v123
.
Exemple
> SELECT * FROM events@20190101000000000
> SELECT * FROM events@v123
Exemples
-- 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
Articles connexes
- CLUSTER BY clause
- Expression table commune (CTE)
- DISTRIBUTE BY clause
- GROUP BY clause
- HAVING clause
- QUALIFY clause
- Indicateurs
- VALUES clause
- JOIN
- LATERAL VIEW clause
- LIMIT clause
- OFFSET clause
- ORDER BY clause
- PIVOT clause
- Requête
- TABLESAMPLE clause
- Set opérateurs
- SORT BY clause
- Clause * (étoile)
- Table-fonction à valeurs (TVF)
- table de référence
- UNPIVOT clause
- WHERE clause
- WINDOW clause
- Window fonctions