SELECT

S’applique à :check marked yes Databricks SQL check marked yes 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

  • indicateurs

    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.

    • expression

      Combinaison d’une ou plusieurs valeurs, opérateurs et fonctions SQL qui prennent une valeur.

    • column_alias

      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.

  • star_clause

    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 clause FROM.

  • table_reference

    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.

  • LATERAL VIEW

    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.

  • WHERE

    Filtre le résultat de la clause FROM en fonction des prédicats fournis.

  • GROUP BY

    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 clause FILTER est attachée à une fonction d’agrégation, seules les lignes correspondantes sont transmises à cette fonction.

  • HAVING

    Prédicats par lesquels les lignes produites par GROUP BY sont filtrées. La clause HAVING permet de filtrer les lignes après l’exécution du regroupement. Si vous spécifiez HAVING sans GROUP BY, il indique GROUP BY sans expressions de regroupement (agrégat global).

  • QUALIFY

    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 horodateur
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18', autrement dit, une chaîne de date
    • current_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 de DESCRIBE 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 delta.`/mnt/delta/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