Amazon Athena의 테이블을 쿼리할 때 TIMESTAMP 결과가 비어 있는 이유가 무엇인가요?

1분 분량
0

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) 함수의 **형식(format)**은 데이터에서 사용한 TIMESTAMP 형식이어야 합니다.

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

2020-11-14T02:34:48Z

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

SELECT from_iso8601_timestamp(ts) FROM timestamptestcsv3

관련 정보

Amazon Athena의 데이터 유형

AWS 공식
AWS 공식업데이트됨 2년 전