다음을 통해 공유


파티션

적용 대상:예로 표시된 확인 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 ] } [, ...] )

매개 변수

  • partition_column

    식별자는 테이블의 column_identifier 참조할 수 있습니다. 둘 이상의 열을 지정하는 경우 중복 항목이 없어야 합니다. 테이블의 column_specification 모든 열을 참조하면 오류가 발생합니다.

  • column_type

    partition_column가 테이블의 column_specification에서 column_identifier을 참조하지 않는 한, column_typepartition_column의 데이터 유형을 정의합니다.

    Databricks SQL에서 지원하는 모든 데이터 형식이 모든 데이터 원본에서 지원되는 것은 아닙니다.

주의

Delta Lake 테이블의 분할 열을 정의하지 않으면, 열 사양에 있는 열을 참조하는 모든 열은 항상 테이블의 끝으로 이동됩니다.

PARTITION

PARTITION 절을 사용하여 쿼리하거나 조작할 파티션을 식별합니다.

파티션은 모든 열의 이름을 지정하고 각각을 값과 연결하여 식별됩니다. 특정 순서로 지정할 필요는 없습니다.

기존 테이블에 새 파티션을 추가하지 않는 한 열 또는 값을 생략하여 열의 하위 집합과 일치하는 모든 일치하는 파티션에 작업이 적용된다는 것을 나타낼 수 있습니다.

PARTITION ( { partition_column  [ = partition_value | LIKE pattern ] } [ , ... ] )

매개 변수

  • partition_column

    테이블의 파티션 열로 지정된 열입니다. 동일한 열을 두 번 지정할 수 없습니다.

  • = partition_value

    파티션 열의 형식과 일치하는 데이터 형식의 리터럴입니다. 파티션 값을 생략하면 사양이 이 파티션 열의 모든 값과 일치합니다.

  • LIKE pattern

    이 양식은 ALTER SHARE ADD TABLE경우에만 허용됩니다.

    partition_column의 문자열 표현을 pattern에 일치시킵니다. patternLIKE에서 사용되는 문자열 리터럴이어야 합니다.

-- 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');