為什麼在 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(字符串和格式)函數中的格式必須是數據中使用的 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 年前