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에
형식의 0바이트 자리 표시자 파일이 생성됩니다. 이러한 파일은 수동으로 제거해야 합니다.partition_value
_$folder$
이러한 일이 발생하지 않도록 하려면 아래와 같이 ADD IF NOT EXISTS
구문을 사용하여 ALTER TABLE ADD PARTITION
문을 변경합니다.
ALTER TABLE table_name ADD IF NOT EXISTS PARTITION […]