Amazon Athena 테이블에서 TIMESTAMP 데이터의 한 열을 쿼리할 때 결과가 비어 있거나 쿼리에 실패합니다. 입력 파일에는 데이터가 있습니다. 이 문제를 해결하려면 어떻게 해야 합니까?

TIMESTAMP 데이터의 형식이 올바르지 않은 경우에 그럴 수 있습니다. Athena에는 Java TIMESTAMP 형식이 필요합니다.

YYYY-MM-DD HH:MM:SS.fffffffff

TIMESTAMP 데이터를 올바른 형식으로 변경하려면:

  1. 열을 STRING으로 정의합니다.
  2. 쿼리에서 Presto의 날짜 및 시간 함수를 사용하여 열을 DATE 또는 TIMESTAMP로 읽습니다.

열을 STRING로 정의

다음 명령을 실행합니다.

CREATE EXTERNAL TABLE 'test'(
  'ts' STRING)ROW FORMAT SERDE<  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
LOCATION
  's3://<your-bucket>/<path-to-data>/'

쿼리에서 Presto의 날짜 및 시간 함수를 사용하여 열을 DATE 또는 TIMESTAMP로 읽습니다.

입력 데이터의 형식이 다음과 같은 경우:

20170621T015005
20170723T095605

다음 예제에 나타난 date_parse 함수를 사용합니다.

SELECT date_parse(ts,'%Y%m%dT%h%i%s') FROM timestamptestcsv3

참고: date_parse(string,format) 함수의 형식은 데이터에서 사용한 TIMESTAMP 형식이어야 합니다. 자세한 내용은 Presto 설명서의 MySQL 날짜 함수를 참조하십시오.

입력 데이터의 형식이 다음과 같이 ISO 8601 형식인 경우:

2018-12-24T02:34:48Z

from_iso8601_timestamp() 함수를 사용하여 ts 필드를 TIMESTAMP로 읽습니다. 예:

SELECT from_iso8601_timestamp(ts) FROM timestamptestcsv3

페이지 내용이 도움이 되었습니까? | 아니요

AWS 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시된 날짜: 2018년 8월 8일

업데이트 날짜: 2019년 1월 17일