Amazon Athena의 테이블을 쿼리할 때 TIMESTAMP 결과가 비어 있습니다.

최종 업데이트 날짜: 2020년 11월 17일

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://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

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?