Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
Databricks SQL
Databricks Runtime
Returnerar de resultatrader som sorteras inom varje Spark-partition i den angivna användarordningen.
När data sprids över flera Spark-partitioner kan SORT BY returnera ett delvis ordnat resultat.
Om du vill styra hur data har delats upp i Spark-partitioner använder du REPARTITION hint.
Det här är annorlunda jämfört med ORDER BY-satsen som garanterar en fullständigt ordnad utdata oavsett hur Spark delar upp datan.
Syntax
SORT BY { expression [ sort_direction nulls_sort_oder ] } [, ...]
sort_direction
[ ASC | DEC ]
nulls_sort_order
[ NULLS FIRST | NULLS LAST ]
Parametrar
-
Ett uttryck av alla typer som används för att upprätta en lokal partitionsordning där resultaten returneras.
Om uttrycket är ett literalt INT-värde tolkas det som en kolumnposition i urvalslistan.
sort_direction
Anger sorteringsordningen för sorteringen efter uttryck.
-
ASC: Sorteringsriktningen för det här uttrycket är stigande. -
DESC: Sorteringsordningen för det här uttrycket är fallande.
Om sorteringsriktningen inte uttryckligen anges sorteras raderna som standard stigande.
-
nulls_sort_order
Du kan också ange om NULL-värden returneras före/efter icke-NULL-värden. Om
null_sort_orderinte har angetts sorteras NULL:er först om sorteringsordningen ärASCoch NULLS-sortering senast om sorteringsordningen ärDESC.-
NULLS FIRST: NULL-värden returneras först oavsett sorteringsordning. -
NULLS LAST: NULL-värden returneras sist oavsett sorteringsordning.
-
När du anger fler än ett uttryck sker sortering från vänster till höger. Alla rader i Spark-partitionen sorteras efter det första uttrycket. Om det finns duplicerade värden för det första uttrycket används det andra uttrycket för att matcha ordningen i gruppen med dubbletter och så vidare. Den resulterande ordningen är inte deterministisk om det finns duplicerade värden i alla ordning efter uttryck.
Exempel
> 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