Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:
Databricks SQL
Databricks Runtime
A felhasználó által megadott sorrendben az egyes Spark-partíciókon belül rendezett eredménysorokat adja vissza.
Ha az adatok több Spark-partíció között oszlanak el, SORT BY részben rendezett eredményt adhat vissza.
Az adatok Spark-partíciókra való felosztásának explicit szabályozásához használja a REPARTITION hint.
Ez eltér a ORDER BY záradéktól, amely teljes mértékben rendezett kimenetet garantál, függetlenül attól, hogy a Spark hogyan osztja fel az adatokat.
Syntax
SORT BY { expression [ sort_direction nulls_sort_oder ] } [, ...]
sort_direction
[ ASC | DEC ]
nulls_sort_order
[ NULLS FIRST | NULLS LAST ]
Paraméterek
-
Bármilyen típusú kifejezés, amely egy partíció helyi sorrendjének meghatározására szolgál, amelyben az eredmények lesznek visszaadva.
Ha a kifejezés egy literális INT-érték, akkor a rendszer oszloppozícióként értelmezi a kijelölési listában.
sort_direction
A rendezés rendezési sorrendjét adja meg kifejezés szerint.
-
ASC: A kifejezés rendezési iránya növekvő. -
DESC: A kifejezés rendezési sorrendje csökkenő.
Ha a rendezési irány nincs explicit módon megadva, akkor alapértelmezés szerint a sorok növekvő sorrendbe vannak rendezve.
-
nulls_sort_order
Opcionálisan megadja, hogy a NULL értékek nem NULL értékek előtt vagy után lesznek-e visszaadva. Ha
null_sort_ordernincs megadva, akkor az NULL-ek rendeznek először, ha rendezési sorrend vanASC, a NULLS rendezés pedig az utolsó, ha a rendezési sorrend .DESC-
NULLS FIRST: A null értékeket a rendszer a rendezési sorrendtől függetlenül először adja vissza. -
NULLS LAST: A NULL értékeket a rendszer a rendezési sorrendtől függetlenül utolsóként adja vissza.
-
Egynél több kifejezés megadásakor balról jobbra történik a rendezés. A Spark-partíció minden sorát az első kifejezés rendezi. Ha az első kifejezéshez ismétlődő értékek tartoznak, a második kifejezés az ismétlődések csoportján belüli sorrend feloldására szolgál, és így tovább. Az eredményként kapott sorrend nem determinisztikus, ha az összes sorrendben ismétlődő értékek vannak kifejezések szerint.
Példák
> CREATE TEMP VIEW person (zip_code, name, age)
AS VALUES (94588, 'Zen Hui', 50),
(94588, 'Dan Li', 18),
(94588, 'Anil K', 27),
(94588, 'John V', NULL),
(94511, 'David K', 42),
(94511, 'Aryan B.', 18),
(94511, 'Lalit B.', NULL);
-- Use `REPARTITION` hint to partition the data by `zip_code` to
-- examine the `SORT BY` behavior. This is used in rest of the
-- examples.
-- Sort rows by `name` within each partition in ascending manner
> SELECT /*+ REPARTITION(zip_code) */ name, age, zip_code FROM person
SORT BY name;
Anil K 27 94588
Dan Li 18 94588
John V NULL 94588
Zen Hui 50 94588
Aryan B. 18 94511
David K 42 94511
Lalit B. NULL 94511
-- Sort rows within each partition using column position.
> SELECT /*+ REPARTITION(zip_code) */ name, age, zip_code FROM person
SORT BY 1;
Anil K 27 94588
Dan Li 18 94588
John V null 94588
Zen Hui 50 94588
Aryan B. 18 94511
David K 42 94511
Lalit B. null 94511
-- Sort rows within partition in ascending manner keeping null values to be last.
> SELECT /*+ REPARTITION(zip_code) */ age, name, zip_code FROM person
SORT BY age NULLS LAST;
18 Dan Li 94588
27 Anil K 94588
50 Zen Hui 94588
NULL John V 94588
18 Aryan B. 94511
42 David K 94511
NULL Lalit B. 94511
-- Sort rows by age within each partition in descending manner, which defaults to NULL LAST.
> SELECT /*+ REPARTITION(zip_code) */ age, name, zip_code FROM person
SORT BY age DESC;
50 Zen Hui 94588
27 Anil K 94588
18 Dan Li 94588
NULL John V 94588
42 David K 94511
18 Aryan B. 94511
NULL Lalit B. 94511
-- Sort rows by age within each partition in descending manner keeping null values to be first.
> SELECT /*+ REPARTITION(zip_code) */ age, name, zip_code FROM person
SORT BY age DESC NULLS FIRST;
NULL John V 94588
50 Zen Hui 94588
27 Anil K 94588
18 Dan Li 94588
NULL Lalit B. 94511
42 David K 94511
18 Aryan B. 94511
-- Sort rows within each partition based on more than one column with each column having
-- different sort direction.
> SELECT /*+ REPARTITION(zip_code) */ name, age, zip_code FROM person
SORT BY name ASC, age DESC;
Anil K 27 94588
Dan Li 18 94588
John V null 94588
Zen Hui 50 94588
Aryan B. 18 94511
David K 42 94511
Lalit B. null 94511