파티션
적용 대상: Databricks SQL Databricks Runtime
partition는 table의 행 중에서 미리 정의된 columns의 하위 집합을 기준으로 동일한 값을 공유하는 행들의 하위 집합으로 구성됩니다. 이 하위 집합을 분할 columns라고 합니다. 파티션을 사용하면 table에 대한 쿼리 및 데이터 조작의 속도를 높일 수 있습니다.
파티션을 사용하려면, table를 만들 때 PARTITIONED BY 절을 포함하여 분할 column의 set를 정의해야 합니다.
table 행을 삽입하거나 조작할 때 Azure Databricks는 자동으로 행을 적절한 파티션으로 분배합니다.
PARTITION 절을 사용하여 partition을 직접 지정할 수도 있습니다.
이 구문은 Delta Lake 형식을 사용하지 않는 경우에도 tables를 ALTER TABLE 문을 사용하여 DROP
, ADD
또는 RENAME
파티션을 신속하게 처리하는 데 사용할 수 있습니다.
PARTITIONED BY
PARTITIONED BY
절은 새 table이 분할되는 기준이 되는 columns의 list을 지정했습니다.
구문
PARTITIONED BY ( { partition_column [ column_type ] } [, ...] )
Parameters
-
identifier은 table에서
column_identifier
을 참조할 수 있습니다. 둘 이상의 column 지정하는 경우 중복 항목이 없어야 합니다. 모든 columns를 table의column_specification
에서 참조하면 오류가 발생합니다. -
partition_column
가 table의column_specification
에서column_identifier
을 참조하지 않는 한,column_type
가partition_column
의 데이터 형식을 정의합니다.Databricks SQL에서 지원하는 모든 데이터 형식이 모든 데이터 원본에서 지원되는 것은 아닙니다.
주의
Delta Lake의 table 분할 columns을 정의하지 않으면, column 사양에서 columns를 참조하는 항목은 항상 table끝으로 이동됩니다.
PARTITION
사용자는 PARTITION
절을 사용하여 쿼리하거나 조작할 partition을 식별합니다.
partition는 모든 columns에 이름을 지정하고 각각을 값과 연결하여 식별됩니다. 특정 순서로 지정할 필요는 없습니다.
기존 table에 새 partition를 추가하는 경우가 아니면 columns 또는 values를 생략하여 작업이 columns의 하위 집합과 일치하는 모든 파티션에 적용된다는 것을 나타낼 수 있습니다.
PARTITION ( { partition_column [ = partition_value | LIKE pattern ] } [ , ... ] )
Parameters
-
column는 table의 partitioncolumn으로 이름이 지정되었습니다. 동일한 column 두 번 지정할 수 없습니다.
= partition_value
partition column형식과 일치하는 데이터 형식의 리터럴입니다. partition 값을 생략하면, partitioncolumn에 대한 모든 values이 일치하는 사양이 됩니다.
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');