파티션 프로젝션에 지원되는 형식 - Amazon Athena

파티션 프로젝션에 지원되는 형식

테이블에는 enum, integer, date, 또는 injected 파티션 열 형식의 조합이 있을 수 있습니다.

열거형 형식

값이 열거형 집합의 멤버(예: 공항 코드 또는 AWS 리전)인 파티션 열의 enum 형식을 사용합니다.

테이블에서 다음과 같이 파티션 속성을 정의합니다.

속성 이름 예제 값 설명
projection.columnName.type

enum

필수 사항입니다. columnName 열에 사용할 프로젝션 형식입니다. 열거형 형식의 사용을 나타내기 위해서는 값이 enum이어야 합니다(대소문자 구분 안 함). 선행 및 후행 공백을 사용할 수 있습니다.
projection.columnName.values

A,B,C,D,E,F,G,Unknown

필수 사항입니다. ColumnName 열에 대한 열거형 파티션 값의 쉼표로 구분된 목록입니다. 공백은 열거형 값의 일부로 간주됩니다.
참고

가장 좋은 방법은 enum 기반 파티션 프로젝션 사용을 수십 개 이하로 제한하는 것입니다 enum 프로젝션에 대해 구체적인 제한은 없지만 테이블의 메타데이터 총 크기는 gzip 압축 시 약 1MB의 AWS Glue 제한을 초과할 수 없습니다. 이 제한은 열 이름, 위치, 스토리지 형식 등과 같은 테이블의 주요 부분에서 공유됩니다. 자신이 enum 프로젝션에 수십 개 이상의 고유 ID를 사용하고 있다면 대리 필드에서 더 적은 수의 고유 값으로 버킷팅하는 등의 대안적 방법을 고려하는 것이 좋습니다. 카디널리티를 포기함으로써 enum 필드에서 고유 값의 수를 제어할 수 있습니다.

정수 형식

가능한 값을 정의된 범위 내의 정수로 해석할 수 있는 파티션 열에 대해 정수 형식을 사용합니다. 프로젝션 정수 열은 현재 Java 부호 있는 long(-263~263-1 포함)의 범위로 제한됩니다.

속성 이름 예제 값 설명
projection.columnName.type

integer

필수 사항입니다. columnName 열에 사용할 프로젝션 형식입니다. 정수 형식의 사용을 나타내기 위해서는 값이 integer여야 합니다(대소문자 구분 안 함). 선행 및 후행 공백을 사용할 수 있습니다.
projection.columnName.range

0,10

-1,8675309

0001,9999

필수 사항입니다. columnName 열에 대한 쿼리에서 반환할 최소 및 최대 범위 값을 제공하는 두 요소의 쉼표로 구분된 목록입니다. 값을 하이픈이 아닌 쉼표로 구분해야 합니다. 이 값은 포함되며 음수일 수 있으며 선행 0을 포함할 수 있습니다. 선행 및 후행 공백을 사용할 수 있습니다.
projection.columnName.interval

1

5

선택 사항입니다. columnName 열에 대한 연속 파티션 값 사이의 간격을 지정하는 양의 정수입니다. 예를 들어 interval 값이 “1"인 range 값 “1,3"은 1, 2, 3 값을 생성합니다. interval 값이 “2"인 동일한 range 값은 값 1과 3을 생성하며 2를 건너뜁니다. 선행 및 후행 공백을 사용할 수 있습니다. 기본 값은 1입니다.
projection.columnName.digits

1

5

선택 사항입니다. columnName 열에 대한 파티션 값의 최종 표시에 포함할 자릿수를 지정하는 양의 정수입니다. 예를 들어 digits 값이 “1"인 range 값 “1,3"은 1, 2, 3 값을 생성합니다. digits 값이 “2"인 동일한 range 값은 01, 02 및 03 값을 생성합니다. 선행 및 후행 공백을 사용할 수 있습니다. 기본값은 고정 자릿수와 선행 0이 없습니다.

날짜 형식

정의된 범위 내에서 값을 날짜(선택적 시간 포함)로 해석할 수 있는 파티션 열에 대해 날짜 형식을 사용합니다.

중요

프로젝션 날짜 열은 쿼리 실행 시 UTC(협정 세계 표준시)로 생성됩니다.

속성 이름 예제 값 설명
projection.columnName.type

date

필수 사항입니다. columnName 열에 사용할 프로젝션 형식입니다. 날짜 형식의 사용을 나타내기 위해서는 값이 date여야 합니다(대소문자 구분 안 함). 선행 및 후행 공백을 사용할 수 있습니다.
projection.columnName.range

201701,201812

01-01-2010,12-31-2018

NOW-3YEARS,NOW

201801,NOW+1MONTH

필수 사항입니다. columnName 열에 대한 최소 및 최대 range 값을 제공하는 두 요소의 쉼표로 구분된 목록입니다. 이 값은 포함되며 Java java.time.* 날짜 형식과 호환되는 모든 형식을 사용할 수 있습니다. 최소값과 최대값 모두 동일한 형식을 사용해야 합니다. .format 특성에 지정된 형식은 이러한 값에 사용되는 형식이어야 합니다.

이 열에는 이 정규식 패턴으로 서식이 지정된 상대 날짜 문자열도 포함될 수 있습니다.

\s*NOW\s*(([\+\-])\s*([0-9]+)\s*(YEARS?|MONTHS?|WEEKS?|DAYS?|HOURS?|MINUTES?|SECONDS?)\s*)?

공백은 허용되지만 날짜 리터럴은 날짜 문자열 자체의 일부로 간주됩니다.

projection.columnName.format

yyyyMM

dd-MM-yyyy

dd-MM-yyyy-HH-mm-ss

필수 사항입니다. Java 날짜 형식 DateTimeFormatter를 기반으로 하는 날짜 형식 문자열입니다. 지원되는 모든 Java.time.* 형식일 수 있습니다.
projection.columnName.interval

1

5

columnName에 열에 대한 연속 파티션 값 사이의 간격을 지정하는 양의 정수입니다. 예를 들어 interval 값이 1이고 interval.unit 값이 MONTHSrange2017-01,2018-12는 2017-01, 2017-02, 2017-03 등의 값을 생성합니다. interval 값이 2이고 interval.unit 값이 MONTHS인 동일한 range 값은 2017-01, 2017-03, 2017-05 등의 값을 생성합니다. 선행 및 후행 공백을 사용할 수 있습니다.

제공된 날짜가 하루 또는 한 달 정밀도인 경우 interval은 선택 사항이며 기본값은 각각 1일 또는 1개월입니다. 그렇지 않으면 interval이 필요합니다.

projection.columnName.interval.unit

YEARS

MONTHS

WEEKS

DAYS

HOURS

MINUTES

SECONDS

MILLIS

ChronoUnit의 직렬화된 형식을 나타내는 시간 단위 단어입니다. 가능한 값은 YEARS, MONTHS, WEEKS, DAYS, HOURS, MINUTES, SECONDS 또는 MILLIS입니다. 이러한 값은 대/소문자를 구분합니다.

제공된 날짜가 하루 또는 한 달 정밀도인 경우 interval.unit은 선택 사항이며 기본값은 각각 1일 또는 1개월입니다. 그렇지 않으면 interval.unit이 필요합니다.

삽입 형식

일부 논리적 범위 내에서 절차에 따라 생성될 수 없지만 쿼리의 WHERE 절에서 단일 값으로 제공되는 가능한 값을 가진 파티션 열에 대해 삽입된 형식을 사용하세요.

다음 사항을 명심해야 합니다.

  • 삽입된 각 열에 대해 필터 식이 제공되지 않으면 삽입된 열에 대한 쿼리가 실패합니다.

  • 주입된 열의 필터 식에 대해 여러 값이 있는 쿼리는 값이 분리된 경우에만 성공합니다.

  • string 형식의 열만 지원됩니다.

속성 이름 설명
projection.columnName.type

injected

필수 사항입니다. columnName 열에 사용할 프로젝션 형식입니다. string 형식만 지원됩니다. 지정된 값은 injected여야 합니다(대소문자 구분 안 함). 선행 및 후행 공백을 사용할 수 있습니다.

자세한 내용은 injected 프로젝션 유형 사용 단원을 참조하세요.