파티션을
적용 대상: Databricks SQL 검사 예 Databricks Runtime
파티션은 분할 열이라는 미리 정의된 열 하위 집합에 대해 동일한 값을 공유하는 테이블의 행 하위 집합으로 구성됩니다. 파티션을 사용하면 데이터 조작뿐만 아니라 테이블에 대한 쿼리의 속도를 높일 수 있습니다.
파티션을 사용하려면 PARTITIONED BY 절을 포함하여 테이블을 만들 때 분할 열 집합을 정의합니다.
테이블에 행을 삽입하거나 조작할 때 Azure Databricks는 자동으로 행을 적절한 파티션으로 디스패치합니다.
PARTITION 절을 사용하여 파티션을 직접 지정할 수도 있습니다.
이 구문은 Delta Lake 형식을 사용하지 않는 테이블에도 사용할 수 있으며 ALTER TABLE 문을 사용하여 파티션을 빠르게 DROP, ADD 또는 RENAME할 수 있습니다.
분할 기준
절은 PARTITIONED BY
새 테이블이 분할되는 열 목록을 지정했습니다.
구문
PARTITIONED BY ( { partition_column [ column_type ] } [, ...] )
매개 변수
-
식별자는 테이블의 를
column_identifier
참조할 수 있습니다. 둘 이상의 열을 지정하는 경우 중복이 없어야 합니다. 테이블의column_specification
모든 열을 참조하는 경우 오류가 발생합니다. -
가 테이블의 에서 를 참조
column_identifier
하지 않는 한partition_column
의column_specification
column_type
데이터 형식을partition_column
정의합니다.Databricks SQL에서 지원하는 모든 데이터 형식 이 모든 데이터 원본에서 지원되는 것은 아닙니다.
메모
열 사양에서 열을 참조하는 Delta Lake 테이블 분할 열을 정의하지 않는 한 항상 테이블의 끝으로 이동됩니다.
파티션
절을 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 LOCATION 'dbfs:/log'
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');