ALTER TABLE ADD PARTITION - Amazon Athena

ALTER TABLE ADD PARTITION

테이블에 대해 하나 이상의 파티션 열을 만듭니다. 각 파티션은 하나 이상의 개별 열 이름/값 조합으로 구성됩니다. 지정된 각각의 조합에 별개의 데이터 디렉터리가 생성되어 상황에 따라 쿼리 성능을 개선할 수 있습니다. 분할된 열은 테이블 데이터 자체 내에 존재하지 않으므로 테이블 자체의 열과 이름이 같은 열 이름을 사용하면 오류가 발생합니다. 자세한 정보는 Athena에서 데이터 분할을 참조하십시오.

Athena에서 테이블과 그 파티션은 동일한 데이터 형식을 사용해야 하지만 스키마는 다를 수 있습니다. 자세한 내용은 파티션이 있는 테이블의 업데이트 단원을 참조하세요.

IAM 정책에 필요한 리소스 수준 권한(glue:CreatePartition 등)에 대한 자세한 내용은 AWS Glue API 권한: 작업 및 리소스 참조AWS Glue Data Catalog의 데이터베이스와 테이블에 대한 세분화된 액세스 섹션을 참조하세요. Athena 사용 시의 권한에 대한 문제 해결 정보는 권한 주제의 Athena의 문제 해결 섹션을 참조하세요.

시놉시스

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION (partition_col1_name = partition_col1_value [,partition_col2_name = partition_col2_value] [,...]) [LOCATION 'location1'] [PARTITION (partition_colA_name = partition_colA_value [,partition_colB_name = partition_colB_value [,...])] [LOCATION 'location2'] [,...]

파라미터

파티션을 추가할 때 파티션에 대해 하나 이상의 열 이름/값 페어와 해당 파티션의 데이터 파일이 있는 Amazon S3 경로를 지정합니다.

[IF NOT EXISTS]

동일한 정의의 파티션이 이미 있으면 오류가 억제되도록 합니다.

PARTITION (partition_col_name = partition_col_value [,...])

지정한 열 이름/값 조합으로 파티션을 생성합니다. 열의 데이터 형식이 문자열인 경우에만 partition_col_value를 문자열 문자로 묶습니다.

[LOCATION 'location']

위의 명령문에서 정의한 파티션을 저장할 디렉터리를 지정합니다.

예제

ALTER TABLE orders ADD PARTITION (dt = '2016-05-14', country = 'IN');
ALTER TABLE orders ADD PARTITION (dt = '2016-05-14', country = 'IN') PARTITION (dt = '2016-05-15', country = 'IN');
ALTER TABLE orders ADD PARTITION (dt = '2016-05-14', country = 'IN') LOCATION 's3://mystorage/path/to/INDIA_14_May_2016/' PARTITION (dt = '2016-05-15', country = 'IN') LOCATION 's3://mystorage/path/to/INDIA_15_May_2016/';
ALTER TABLE flights_parquet ADD IF NOT EXISTS PARTITION (year = '2021')

0바이트 _$folder$ 파일

ALTER TABLE ADD PARTITION 문을 실행할 때 이미 존재하는 파티션과 잘못된 Amazon S3 위치를 지정하는 경우 Amazon S3에 partition_value_$folder$ 형식의 0바이트 자리 표시자 파일이 생성됩니다. 이러한 파일은 수동으로 제거해야 합니다.

이러한 일이 발생하지 않도록 하려면 아래와 같이 ADD IF NOT EXISTS구문을 사용하여 ALTER TABLE ADD PARTITION문을 변경합니다.

ALTER TABLE table_name ADD IF NOT EXISTS PARTITIION […]