CLUSTER BY 절(SELECT)
적용 대상: Databricks SQL Databricks Runtime
입력 식에 따라 데이터를 다시 분할한 다음, 각 파티션 내에서 데이터를 정렬합니다. 이는 의미상 DISTRIBUTE BY를 수행한 다음, SORT BY를 수행하는 것과 같습니다. 이 절은 결과 행이 각 파티션 내에서 정렬되도록 하고 총 출력 순서를 보장하지 않습니다.
구문
CLUSTER BY expression [, ...]
매개 변수
-
값을 생성하는 하나 이상의 값, 연산자 및 SQL 함수의 조합을 지정합니다.
예제
> CREATE TEMP VIEW person (name, age)
AS VALUES ('Zen Hui', 25),
('Anil B', 18),
('Shone S', 16),
('Mike A', 25),
('John A', 18),
('Jack N', 16);
-- Reduce the number of shuffle partitions to 2 to illustrate the behavior of `CLUSTER BY`.
-- It's easier to see the clustering and sorting behavior with less number of partitions.
> SET spark.sql.shuffle.partitions = 2;
-- Select the rows with no ordering. Please note that without any sort directive, the results
-- of the query is not deterministic. It's included here to show the difference in behavior
-- of a query when `CLUSTER BY` is not used vs when it's used. The query below produces rows
-- where age column is not sorted.
> SELECT age, name FROM person;
16 Shone S
25 Zen Hui
16 Jack N
25 Mike A
18 John A
18 Anil B
-- Produces rows clustered by age. Persons with same age are clustered together.
-- In the query below, persons with age 18 and 25 are in first partition and the
-- persons with age 16 are in the second partition. The rows are sorted based
-- on age within each partition.
> SELECT age, name FROM person CLUSTER BY age;
18 John A
18 Anil B
25 Zen Hui
25 Mike A
16 Shone S
16 Jack N