Amazon Athena의 테이블을 쿼리할 때 TIMESTAMP 결과가 비어 있습니다.
최종 업데이트 날짜: 2020년 11월 17일
Amazon Athena 테이블에서 TIMESTAMP 데이터의 한 열을 쿼리할 때 결과가 비어 있거나 쿼리에 실패합니다. 입력 파일에는 데이터가 있습니다. 문제를 해결하려면 어떻게 해야 합니까?
간략한 설명
TIMESTAMP 데이터의 형식이 올바르지 않은 경우에 그럴 수 있습니다. Athena에는 Java TIMESTAMP 형식이 필요합니다.
YYYY-MM-DD HH:MM:SS.fffffffff
TIMESTAMP 데이터를 올바른 형식으로 변경하려면:
- 열을 STRING으로 정의합니다.
- 쿼리에서 Presto의 날짜 및 시간 함수를 사용하여 열을 DATE 또는 TIMESTAMP로 읽습니다.
해결 방법
열을 STRING으로 정의
다음과 유사한 명령을 실행합니다.
CREATE EXTERNAL TABLE 'test'(
'ts' STRING)ROW FORMAT SERDE< 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
LOCATION
's3://doc-example-bucket/path-to-data/'
쿼리에서 Presto의 날짜 및 시간 함수를 사용하여 열을 DATE 또는 TIMESTAMP로 읽습니다.
입력 데이터의 형식이 다음과 같은 경우:
20200921T015005
20200923T095605
그리고 다음 예제에 나타난 date_parse 함수를 사용합니다.
SELECT date_parse(ts,'%Y%m%dT%h%i%s') FROM timestamptestcsv3
참고: date_parse(string,format) 함수의 형식은 데이터에서 사용한 TIMESTAMP 형식이어야 합니다. 자세한 내용은 Presto 설명서의 MySQL 날짜 함수를 참조하세요.
입력 데이터의 형식이 다음과 같이 ISO 8601 형식인 경우:
2020-11-14T02:34:48Z
그리고 from_iso8601_timestamp() 함수를 사용하여 ts 필드를 TIMESTAMP로 읽습니다. 예:
SELECT from_iso8601_timestamp(ts) FROM timestamptestcsv3