파티션
적용 대상: Databricks SQL
Databricks Runtime
파티션은
파티션을 사용하려면 PARTITIONED BY 절을 포함하여 테이블을 만들 때 분할 열 집합을 정의합니다.
테이블에 행을 삽입하거나 조작할 때 Azure Databricks는 자동으로 행을 적절한 파티션으로 디스패치합니다.
PARTITION 절을 사용하여 파티션을 직접 지정할 수도 있습니다.
이 구문은 Delta Lake 형식을 사용하지 않는 테이블에서도 ALTER TABLE 문을 사용하여 DROP
, ADD
또는 RENAME
로 파티션을 신속하게 생성할 수 있습니다.
PARTITIONED BY
PARTITIONED BY
절은 새 테이블이 분할되는 열 목록을 지정했습니다.
구문
PARTITIONED BY ( { partition_column [ column_type ] } [, ...] )
매개 변수
-
식별자는 테이블의
column_identifier
참조할 수 있습니다. 둘 이상의 열을 지정하는 경우 중복 항목이 없어야 합니다. 테이블의column_specification
모든 열을 참조하면 오류가 발생합니다. -
partition_column
가 테이블의column_specification
에서column_identifier
을 참조하지 않는 한,column_type
은partition_column
의 데이터 유형을 정의합니다.Databricks SQL에서 지원하는 모든 데이터 형식이 모든 데이터 원본에서 지원되는 것은 아닙니다.
주의
Delta Lake 테이블의 분할 열을 정의하지 않으면, 열 사양에 있는 열을 참조하는 모든 열은 항상 테이블의 끝으로 이동됩니다.
PARTITION
PARTITION
절을 사용하여 쿼리하거나 조작할 파티션을 식별합니다.
파티션은 모든 열의 이름을 지정하고 각각을 값과 연결하여 식별됩니다. 특정 순서로 지정할 필요는 없습니다.
기존 테이블에 새 파티션을 추가하지 않는 한 열 또는 값을 생략하여 열의 하위 집합과 일치하는 모든 일치하는 파티션에 작업이 적용된다는 것을 나타낼 수 있습니다.
PARTITION ( { partition_column [ = partition_value | LIKE pattern ] } [ , ... ] )
매개 변수
-
테이블의 파티션 열로 지정된 열입니다. 동일한 열을 두 번 지정할 수 없습니다.
= partition_value
파티션 열의 형식과 일치하는 데이터 형식의 리터럴입니다. 파티션 값을 생략하면 사양이 이 파티션 열의 모든 값과 일치합니다.
LIKE pattern
이 양식은 ALTER SHARE ADD TABLE경우에만 허용됩니다.
partition_column
의 문자열 표현을pattern
에 일치시킵니다.pattern
은 LIKE에서 사용되는 문자열 리터럴이어야 합니다.
예
-- Use the PARTTIONED BY clause in a table definition
> CREATE TABLE student(university STRING,
major STRING,
name STRING)
PARTITIONED BY(university, major)
> CREATE TABLE professor(name STRING)
PARTITIONED BY(university STRING,
department STRING);
-- Use the PARTITION specification to INSERT into a table
> INSERT INTO student
PARTITION(university= 'TU Kaiserslautern') (major, name)
SELECT major, name FROM freshmen;
-- Use the partition specification to add and drop a partition
> CREATE TABLE log(date DATE, id INT, event STRING)
USING CSV
PARTITIONED BY (date);
> ALTER TABLE log ADD PARTITION(date = DATE'2021-09-10');
> ALTER TABLE log DROP PARTITION(date = DATE'2021-09-10');
-- Drop all partitions from the named university, independent of the major.
> ALTER TABLE student DROP PARTITION(university = 'TU Kaiserslautern');