SELECT

Récupère les jeux de résultats d’une ou plusieurs tables.

Syntaxe

[ WITH with_query [ , ... ] ]
select_statement [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select_statement, ... ]
  [ ORDER BY { expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [ , ... ] } ]
  [ SORT BY { expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [ , ... ] } ]
  [ CLUSTER BY { expression [ , ... ] } ]
  [ DISTRIBUTE BY { expression [, ... ] } ]
  [ WINDOW clause ]
  [ LIMIT clause ]

Tandis que select_statement est défini comme

SELECT [ hints , ... ] [ ALL | DISTINCT ] { [ named_expression | regex_column_names ] [ , ... ] }
  FROM { from_item [ , ... ] }
  [ PIVOT clause ]
  [ LATERAL VIEW clause ] [ ... ]
  [ WHERE boolean_expression ]
  [ GROUP BY expression [ , ... ] ]
  [ HAVING boolean_expression ]

Paramètres

  • with_query

    Une ou plusieurs expressions de table communes avant le bloc de requête principal. Ces expressions de table peuvent être référencées ultérieurement dans la clause. Cela est utile pour extraire des blocs de sous-requêtes répétés dans la FROM clause et améliorer la lisibilité de la requête.

  • indicateurs

    Les indicateurs aident l’optimiseur Spark à prendre de meilleures décisions en matière de planification. Spark prend en charge les indicateurs qui influencent la sélection des stratégies de jointure et le repartitionnement des données.

  • ALL

    Sélectionnez toutes les lignes correspondantes de la relation. Option activée par défaut.

  • DISTINCT

    Sélectionnez toutes les lignes correspondantes de la relation après avoir supprimé les doublons dans les résultats.

  • named_expression

    Expression avec un nom affecté. Indique une expression de colonne.

    Stockéesyntaxe

  • from_item

    Source d’entrée pour la requête. Celui-ci peut avoir l'une des valeurs suivantes :

    • Identificateur de table

      • [database_name.] table_name: Un nom de table, éventuellement qualifié avec un nom de base de données.
      • delta.`<path-to-table>`: L’emplacement d’une table Delta existante.

      Vous pouvez spécifier une version de trajet horaire à l’aide de la TIMESTAMP AS OFVERSION AS OF syntaxe, ou @ après une relation de table. Pour plus d’informations , consultez interroger un instantané plus ancien d’une table (voyage de temps) .

    • JOIN

      Combine deux relations ou plus à l’aide d’une jointure.

    • FILE

      Interroger un fichier avec un format spécifié directement avec SQL.

    • Fonction table (TVF)

      Appelle une fonction de table.

    • Table inline

      Définit une table Inline.

    • Sous-requête

    • MAINTIEN demande

      Calcule une relation à l’aide d’une requête.

      LATERAL

      Remarque

      Disponible dans Databricks Runtime 9,0 et versions ultérieures.

      Vous pouvez spécifier le LATERAL mot clé qui permet à la requête de faire référence aux colonnes dans les précédents from_item .

  • CROISÉ

    Utilisé pour la perspective des données ; vous pouvez récupérer les valeurs agrégées en fonction d’une valeur de colonne spécifique.

  • VUE LATÉRALE

    Utilisé conjointement avec les fonctions de générateur telles que EXPLODE , qui génère une table virtuelle contenant une ou plusieurs lignes. VUE LATÉRALE applique les lignes à chaque ligne de sortie d’origine.

  • WHERE

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

  • REGROUPER PAR

    Expressions utilisées pour regrouper les lignes. Utilisé conjointement avec les fonctions d’agrégation ( MIN , MAX ,, COUNTSUM , AVG ) pour regrouper des lignes en fonction des expressions de regroupement et des valeurs agrégées dans chaque groupe. Lorsqu’une FILTER clause 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 HAVING clause est utilisée pour filtrer les lignes après l’exécution du regroupement. Si vous spécifiez HAVING sans GROUP BY , il indique une GROUP BY sans expressions de regroupement (agrégat global).

  • ORDER BY

    Classement des lignes du jeu de résultats complet de la requête. Les lignes de sortie sont triées sur les partitions. Ce paramètre s’exclut mutuellement avec SORT BY , CLUSTER BY, et DISTRIBUTE BY et ne peuvent pas être spécifiés ensemble.

  • TRIER PAR

    Ordre selon lequel les lignes sont triées dans chaque partition. Ce paramètre est mutuellement exclusif avec ORDER BY et CLUSTER BY et ne peuvent pas être spécifiés ensemble.

  • CLUSTER PAR

    Ensemble d’expressions utilisé pour repartitionner et trier les lignes. L’utilisation de cette clause a effet de l’utilisation DISTRIBUTE BY conjointe de et de SORT BY .

  • DISTRIBUER PAR

    Ensemble d’expressions par lequel les lignes de résultats sont repartitionnées. Ce paramètre est mutuellement exclusif avec ORDER BY et CLUSTER BY et ne peuvent pas être spécifiés ensemble.

  • FENETRE

    Définit les spécifications de fenêtres nommées qui peuvent être partagées par plusieurs fonctions de fenêtre dans le .

  • SÉPAR

    Nombre maximal de lignes qui peuvent être retournées par une instruction ou une sous-requête. Cette clause est principalement utilisé dans conjointement avec ORDER BY pour produire un résultat déterministe.

  • boolean_expression

    Toute expression qui prend la valeur d’un type de résultat Boolean . Vous pouvez combiner deux ou plus d’expressions à l’aide des opérateurs logiques ( AND , OR ).

  • expression

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

Sélectionner sur une table Delta

Outre les SELECT options standard, les tables delta prennent en charge les options de voyage décrites dans cette section. Pour plus d’informations, consultez interroger un instantané plus ancien d’une table (voyage de temps).

Syntaxe de AS OF

SELECT * FROM table_identifier TIMESTAMP AS OF timestamp_expression
SELECT * FROM table_identifier VERSION AS OF version

where

  • timestamp_expression peut être l’un des éléments suivants :
    • '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
    • Dans Databricks Runtime 6,6 et versions ultérieures :
      • current_timestamp() - interval 12 hours
      • date_sub(current_date(), 1)
      • Toute autre expression qui est ou qui peut être castée en un horodatage
  • version valeur de type long qui peut être obtenue à partir de la sortie de DESCRIBE HISTORY table_spec .

Ni timestamp_expression ni ne peuvent être des sous- version 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 l’horodatage ou la version. L’horodateur doit être au yyyyMMddHHmmssSSS format. Vous pouvez spécifier une version après @ en v l’ajoutant à la version. Par exemple, pour interroger 123 la version de la table events , spécifiez events@v123 .

 Exemple

SELECT * FROM events@20190101000000000
SELECT * FROM events@v123