CTAS 쿼리에 대한 고려 사항 및 제한 사항 - Amazon Athena

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

CTAS 쿼리에 대한 고려 사항 및 제한 사항

다음 섹션에서는 Athena에서 CREATE TABLE AS SELECT(CTAS) 쿼리를 사용할 때 유의해야 할 고려 사항과 제한 사항을 설명합니다.

CTAS 쿼리 구문

CTAS 쿼리 구문은 테이블 생성에 사용되는 CREATE [EXTERNAL] TABLE의 구문과 다릅니다. CREATE TABLE AS 섹션을 참조하십시오.

CTAS 쿼리와 뷰

CTAS 쿼리는 Amazon S3의 지정된 위치에 새 데이터를 쓰는 반면에 뷰는 어떠한 데이터도 쓰지 않습니다.

CTAS 쿼리 결과의 위치

작업 그룹이 쿼리 결과 위치에 대한 클라이언트 측 설정을 재정의하는 경우 Athena는 s3://<workgroup-query-results-location>/tables/<query-id>/ 위치에 테이블을 생성합니다. 작업 그룹에 지정된 쿼리 결과 위치를 보려면 작업 그룹 세부 정보를 조회하세요.

작업 그룹이 쿼리 결과 위치를 재정의하지 않으면 CTAS 쿼리에서 WITH (external_location ='s3://location/') 구문을 사용하여 CTAS 쿼리 결과가 저장되는 위치를 지정할 수 있습니다.

참고

external_location 속성은 비어 있는 위치를 지정해야 합니다. CTAS 쿼리는 버킷의 경로 위치(접두사)가 비어 있는지 확인하고 해당 위치에 이미 데이터가 있는 경우 해당 데이터를 절대 덮어쓰지 않습니다. 동일한 위치를 다시 사용하려면 버킷의 키 접두사 위치에서 데이터를 삭제하세요.

external_location 구문을 생략하고 작업 그룹 설정을 사용하지 않으면 Athena는 쿼리 결과 위치에 대해 클라이언트 측 설정을 사용하고 s3://<client-query-results-location>/<Unsaved-or-query-name>/<year>/<month/<date>/tables/<query-id>/ 위치에 테이블을 생성합니다.

분리된 파일 찾기

CTAS 또는 INSERT INTO 문이 실패하는 경우 분리된 데이터가 데이터 위치에 남아있을 가능성이 있습니다. 일부 경우에서 Athena는 버킷에서 데이터 또는 부분 데이터를 삭제하지 않으므로 후속 쿼리에서 이 부분 데이터를 읽을 수도 있습니다. 검사 또는 삭제할 분리된 파일을 찾으려면 Athena에서 제공하는 데이터 매니페스트 파일을 사용하여 작성할 파일 목록을 추적할 수 있습니다. 자세한 내용은 쿼리 출력 파일 식별DataManifestLocation 섹션을 참조하세요.

ORDER BY 절 무시됨

CTAS 쿼리에서 Athena는 쿼리의 SELECT 부분에 있는 ORDER BY 절을 무시합니다.

SQL 사양(ISO 9075 Part 2)에 따라, ORDER BY 절을 바로 포함하는 쿼리 표현식에서만 쿼리 표현식에서 지정한 테이블의 행 순서가 보장됩니다. 어떤 경우든 SQL의 테이블은 내재적으로 정렬되지 않기 때문에 하위 쿼리에서 ORDER BY를 구현하면 쿼리가 잘못 수행되고 정렬된 출력을 얻을 수 없습니다. 따라서 Athena CTAS 쿼리에서는 데이터를 쓸 때 ORDER BY 절에서 지정한 순서가 유지되지 않을 수 있습니다.

쿼리 결과 저장 형식

데이터 스토리지 형식을 지정하지 않은 경우 CTAS 쿼리 결과는 기본적으로 Parquet에 저장됩니다. CTAS 결과는 PARQUET, ORC, AVRO, JSONTEXTFILE에 저장할 수 있습니다. CTAS TEXTFILE 형식에는 다중 문자 구분 기호가 지원되지 않습니다. CTAS 쿼리에서는 형식 변환을 SerDe 해석하기 위해 a를 지정할 필요가 없습니다. Example: Writing query results to a different format 섹션을 참조하십시오.

압축 형식

GZIP 압축은 JSON 및 TEXTFILE 형식의 CTAS 쿼리 결과에 사용됩니다. Parquet의 경우 GZIP 또는 SNAPPY를 사용할 수 있으며 기본값은 GZIP입니다. ORC의 경우 LZ4, SNAPPY, ZLIB 또는 ZSTD를 사용할 수 있으며 기본값은 ZLIB입니다. 압축을 지정하는 CTAS 예제는 Example: Specifying data storage and compression formats단원을 참조하십시오. Athena의 압축에 대한 자세한 내용은 Athena 압축 지원 섹션을 참조하세요.

파티션 및 버킷 한도

CTAS 쿼리의 결과 데이터를 분할하고 버킷화할 수 있습니다. 자세한 정보는 Athena에서 파티셔닝 및 버킷팅을 참조하세요. CTAS를 사용하여 파티션을 나눈 테이블을 만들 때 Athena는 100개의 파티션을 쓸 수 있도록 제한됩니다.

대상 테이블의 속성을 지정하는 WITH 절 끝에 분할 및 버킷팅 조건자를 포함합니다. 자세한 내용은 Example: Creating bucketed and partitioned tablesAthena에서 파티셔닝 및 버킷팅 단원을 참조하세요.

100개 파티션 제한을 해결하는 방법에 대한 자세한 내용은 CTAS 및 INSERT INTO를 사용하여 100개 파티션 한도 해결 단원을 참조하세요.

암호화(Encryption)

Amazon S3에서 다른 쿼리 결과를 암호화하는 것과 유사한 방식으로 Athena에서 CTAS 쿼리 결과를 암호화할 수 있습니다. 자세한 정보는 Amazon S3에 저장된 Athena 쿼리 결과 암호화을 참조하세요.

예상 버킷 소유자

CTAS 문의 경우 예상 버킷 소유자 설정이 Amazon S3의 대상 테이블 위치에 적용되지 않습니다. 예상 버킷 소유자 설정은 Athena 쿼리 결과에 대해 지정한 Amazon S3 출력 위치에만 적용됩니다. 자세한 정보는 Athena 콘솔을 사용하여 쿼리 결과 위치 지정을 참조하세요.

데이터 타입

CTAS 쿼리의 열 데이터 유형은 원본 쿼리에 지정된 유형과 동일합니다.