Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
Databricks SQL
Databricks Runtime 16.2 et versions ultérieures
Traite le résultat de la requête précédente à l’aide d’une opération chaînée.
Syntaxe
{ SELECT clause |
EXTEND { expression [ [ AS ] column_alias ] } [ , ...] |
SET { column_name = expression } [, ...] |
DROP column_name [, ...] |
AS table_alias |
WHERE clause |
{ LIMIT clause |
OFFSET clause |
LIMIT clause OFFSET clause } |
aggregation |
JOIN clause |
ORDER BY clause |
set_operator |
TABLESAMPLE clause
PIVOT clause
UNPIVOT clause }
aggregation
AGGREGATE aggregate_expr [ [ AS ] column_alias ] [, ...]
[ GROUP BY grouping_expr [AS column_alias ] ]
Paramètres
Clause SELECT
Collecte les colonnes à retourner à partir de la requête, y compris l’exécution d’expressions et la déduplication.
La liste de colonnes ne doit pas contenir de fonctions d’agrégation. Utilisez l’opération de
AGGREGATEà cet effet.ÉTENDRE
Ajoute de nouvelles colonnes à la liste de sélection de requêtes.
-
Combinaison d’une ou plusieurs valeurs, opérateurs et fonctions SQL qui sont évaluées à une valeur.
expressionpeut contenir des références à des colonnes dans la liste de sélection de requêtes, ainsi que descolumn_aliasprécédentes dans cette clauseEXTEND. -
Identificateur de colonne facultatif nommant le résultat de l’expression. Si aucun
column_aliasn’est fourni, Azure Databricks en dérive un.
-
SET
Remplace les colonnes existantes dans la liste de sélection de requêtes par de nouvelles valeurs.
L’opération est effectuée dans l’ordre d’apparence dans la clause
SET. Le résultat de n'importe quelle expression peut tenir compte des colonnes mises à jour par les expressions précédentes.-
Nom de la colonne à mettre à jour. Si la colonne n’existe pas, Azure Databricks génère une erreur UNRESOLVED_COLUMN .
expression
Combinaison d’une ou plusieurs valeurs, opérateurs et fonctions SQL qui sont évaluées à une valeur.
-
DROP column_name [, ...]
Supprime les colonnes de la liste de sélection de requêtes.
Si la colonne n’existe pas, Azure Databricks génère une erreur UNRESOLVED_COLUMN .
COMME table_alias
Attribue un nom au résultat de la requête.
-
Filtre le résultat de la requête en fonction des prédicats fournis.
-
Limite le nombre maximal de lignes qui peuvent être retournées par la requête. Cette clause suit généralement une ORDER BY pour produire un résultat déterministe.
-
Ignore un certain nombre de lignes retournées par la requête. Cette clause est principalement utilisée conjointement avec LIMIT pour page par le biais d’un jeu de résultats, et avec ORDER BY pour produire un résultat déterministe.
Remarque
Lors de la pagination d’un jeu de résultats à l’aide de LIMIT et OFFSET, toutes les lignes sont traitées, y compris les lignes ignorées. Toutefois, seul le sous-ensemble spécifié de lignes est retourné dans le jeu de résultats. La pagination avec cette technique n’est pas recommandée pour les requêtes gourmandes en ressources.
agrégation
Agrège le jeu de résultats de la requête en fonction des expressions fournies et des expressions de regroupement facultatives.
Cette opération produit un jeu de résultats où les colonnes de regroupement apparaissent avant les colonnes agrégées.
AGRÉGAT
Spécifie les expressions à agréger.
-
Expression contenant une ou plusieurs fonctions d’agrégation. Pour plus d’informations, consultez GROUP BY.
-
GROUP BY
Spécifie par quelles expressions les lignes sont regroupées. S’il n’est pas spécifié, toutes les lignes sont traitées comme un seul groupe.
-
Identificateur de colonne facultatif nommant le résultat de l’expression. Si aucun
column_aliasn’est fourni, Azure Databricks en dérive un.
-
Combine deux relations ou plus à l’aide d’une jointure. Pour plus d’informations, consultez JOIN.
-
Trie les lignes du jeu de résultats de la requête. Les lignes de sortie sont triées sur les partitions. Ce paramètre s’exclue mutuellement avec
SORT BY,CLUSTER BYetDISTRIBUTE BYet ne peut pas être spécifié ensemble. -
Combine la requête avec une ou plusieurs sous-requêtes à l’aide de
UNION, deEXCEPTou d’opérateursINTERSECT. -
Réduit la taille du jeu de résultats en échantillonnant uniquement une fraction des lignes.
-
Utilisé pour offrir une perspective sur les données. Vous pouvez obtenir les valeurs agrégées en fonction des valeurs de colonne spécifiques. Pour plus d’informations, consultez PIVOT.
-
Utilisé pour offrir une perspective sur les données. Vous pouvez fractionner plusieurs groupes de colonnes en lignes. Pour plus d’informations, consultez UNPIVOT.
Exemples
-- This query
> FROM customer
|> LEFT OUTER JOIN orders ON c_custkey = o_custkey
AND o_comment NOT LIKE '%unusual%packages%'
|> AGGREGATE COUNT(o_orderkey) c_count
GROUP BY c_custkey
|> AGGREGATE COUNT(*) AS custdist
GROUP BY c_count
|> ORDER BY custdist DESC, c_count DESC;
is equivalent to:
> SELECT c_count, COUNT(*) AS custdist
FROM
(SELECT c_custkey, COUNT(o_orderkey) c_count
FROM customer
LEFT OUTER JOIN orders ON c_custkey = o_custkey
AND o_comment NOT LIKE '%unusual%packages%' GROUP BY c_custkey
) AS c_orders
GROUP BY c_count
ORDER BY custdist DESC, c_count DESC;
-- Using the SELECT clause following a FROM clause
> CREATE TABLE t AS VALUES (0), (1) AS t(col);
> FROM t
|> SELECT col * 2 AS result;
result
------
0
2
-- Adding columns to the result set
> VALUES (0), (1) tab(col)
|> EXTEND col * 2 AS result;
col result
--- ------
0 0
1 2
-- Replacing an expression
> VALUES (0), (1) tab(col)
|> SET col = col * 2;
col
---
0
2
-- Removing a column from the result set
> VALUES (0, 1) tab(col1, col2)
|> DROP col1;
col2
----
1
-- Using a table alias
> VALUES (0, 1) tab(col1, col2)
|> AS new_tab
|> SELECT col1 + col2 FROM new_tab;
col1 + col2
1
-- Filtering the result set
> VALUES (0), (1) tab(col)
|> WHERE col = 1;
col
---
1
-- Using LIMIT to truncate the result
> VALUES (0), (0) tab(col)
|> LIMIT 1;
col
---
0
-- Full-table aggregation
> VALUES (0), (1) tab(col)
|> AGGREGATE COUNT(col) AS count;
count
-----
2
-- Aggregation with grouping
> VALUES (0, 1), (0, 2) tab(col1, col2)
|> AGGREGATE COUNT(col2) AS count GROUP BY col1;
col1 count
---- -----
0 2
-- Using JOINs
> SELECT 0 AS a, 1 AS b
|> AS lhs
|> JOIN VALUES (0, 2) rhs(a, b) ON (lhs.a = rhs.a);
a b c d
--- --- --- ---
0 1 0 2
> VALUES ('apples', 3), ('bananas', 4) t(item, sales)
|> AS produce_sales
|> LEFT JOIN
(SELECT "apples" AS item, 123 AS id) AS produce_data
USING (item)
|> SELECT produce_sales.item, sales, id;
item sales id
--------- ------- ------
apples 3 123
bananas 4 NULL
-- Using ORDER BY
> VALUES (0), (1) tab(col)
|> ORDER BY col DESC;
col
---
1
0
> VALUES (0), (1) tab(a, b)
|> UNION ALL VALUES (2), (3) tab(c, d);
a b
--- ----
0 1
2 3
-- Sampling the result set
> VALUES (0), (0), (0), (0) tab(col)
|> TABLESAMPLE (1 ROWS);
col
---
0
> VALUES (0), (0) tab(col)
|> TABLESAMPLE (100 PERCENT);
col
---
0
0
-- Pivoting a query
> VALUES
("dotNET", 2012, 10000),
("Java", 2012, 20000),
("dotNET", 2012, 5000),
("dotNET", 2013, 48000),
("Java", 2013, 30000)
AS courseSales(course, year, earnings)
|> PIVOT (
SUM(earnings)
FOR COURSE IN ('dotNET', 'Java')
)
year dotNET Java
---- ------ ------
2012 15000 20000
2013 48000 30000
-- Using UNPIVOT
> VALUES
("dotNET", 2012, 10000),
("Java", 2012, 20000),
("dotNET", 2012, 5000),
("dotNET", 2013, 48000),
("Java", 2013, 30000)
AS courseSales(course, year, earnings)
|> UNPIVOT (
earningsYear FOR `year` IN (`2012`, `2013`, `2014`)
course year earnings
-------- ------ --------
Java 2012 20000
Java 2013 30000
dotNET 2012 15000
dotNET 2013 48000
dotNET 2014 22500