다음을 통해 공유


파티션

적용 대상: 예(예)로 표시된 확인 Databricks SQL 예(예)로 표시된 확인 Databricks 런타임

파티션은 분할 열이라는 미리 정의된 열의 하위 집합에 대해 동일한 값을 공유하는 테이블의 행 하위 집합으로 구성됩니다. 파티션을 사용하면 데이터 조작뿐만 아니라 테이블에 대한 쿼리 속도를 향상할 수 있습니다.

파티션을 사용하려면 테이블을 만들 때 PARTITIONED BY 절을 포함하여 분할 열 집합을 정의합니다.

Azure Databricks 테이블에서 행을 삽입하거나 조작할 때 행을 적절한 파티션으로 자동으로 디스패치합니다.

PARTITION 절을 사용하여 파티션을 직접 지정할 수도 있습니다.

이 구문은 Delta Lake 형식을 사용하지 않는 테이블에서도 사용할 수 있으며 ALTER TABLE 문을 사용하여 파티션을 빠르게 드롭 또는 추가하거나 파티션의 이름을 바꿀 수 있습니다.

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