SELECT
S’applique à : Databricks SQL Databricks Runtime
Compose un jeu de résultats à partir d’une ou plusieurs références de table.
La clause SELECT
peut faire partie d’une requête qui comprend également des expressions de table communes (CTE), des opérations de définition et diverses 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 } [, ...] )
Paramètres
-
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 jointure et le repartitionnement des données.
ALL
Sélectionnez toutes les lignes correspondantes dans les références de table. Option activée par défaut.
DISTINCT
Sélectionnez 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.
-
Combinaison d’une ou plusieurs valeurs, opérateurs et fonctions SQL qui prennent une valeur.
-
Identificateur de colonne facultatif qui nomme 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 colonnes référençables dans la clause
FROM
, ou les colonnes ou champs d’une référence de table spécifique 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 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 valeurs 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 de fenêtre. Pour utiliser
QUALIFY
, au moins une fonction de fenêtre doit être présente dans la liste SELECT ou la clause QUALIFY.
Sélectionner sur une table Delta
Outre les options standard SELECT
, les tables Delta prennent en charge les options de voyage dans le temps décrites dans cette section. Pour plus d’informations, consultez Utiliser l’historique des tables Delta Lake.
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
de la table events
, 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 de table commune (CTE)
- DISTRIBUTE BY, clause
- GROUP BY, clause
- HAVING, clause
- QUALIFY, clause
- Indicateurs
- VALUES, clause
- JOIN
- LATERAL VIEW, clause
- LIMIT, clause
- OFFSET, clause
- Clause ORDER BY
- PIVOT, clause
- Requête
- Clause TABLESAMPLE
- Opérateurs de jeu
- SORT BY, clause
- Clause * (étoile)
- Fonction table (TVF)
- référence du tableau
- Clause UNPIVOT
- Clause WHERE
- WINDOW, clause
- Fonctions Windows