跳至內容

如何解決在 Athena 中查詢資料表時出現的時間戳記例外狀況?

2 分的閱讀內容
0

當我在 Amazon Athena 表中查詢 TIMESTAMP 資料欄時,出現例外狀況。

簡短描述

當您查詢包含 TIMESTAMP 資料的 Athena 表時,查詢可能會失敗,並出現下列其中一種例外狀況:

  • "TYPE_MISMATCH: line 1:49: Cannot apply operator: timestamp(3) < varchar(19)": 如果您在查詢中的 TIMESTAMP 和 STRING 值之間使用邏輯運算子 (例如「<」),就可能會出現此例外狀況。
  • "cast(col as timestamp) with INVALID_CAST_ARGUMENT": 如果您對 Athena 不支援的資料類型欄位使用 CAST,那麼您可能會收到此例外狀況。

解決方法

邏輯運算子的語法錯誤

如果您的查詢使用邏輯運算子來比較時間戳記值,那麼您可能會收到例外狀況錯誤。

資料表中的 TIMESTAMP 資料格式可能錯誤。Athena 需要使用 Java TIMESTAMP 格式。在查詢篩選條件中使用 Trino日期時間函式將 STRING 轉換為 TIMESTAMP,或使用CAST 將 STRING 轉換為TIMESTAMP。如需詳細資訊,請參閱 Trino 網站上的日期和時間函式及運算子

請完成下列步驟:

  1. 建立一個包含以 STRING 格式儲存的時間戳記資料的資料表,範例如下:
    CREATE TABLE testdataset1 AS SELECT testid1, testname1, date_parse(testtimestamp1, '%m/%d/%Y %h:%i:%s %p') AS testtimestamp1
    FROM (
        VALUES
            (1, 'a', '7/14/2020 8:22:39 AM'),
            (2, 'b', '8/01/2015 10:22:39 PM'),
            (3, 'c', '8/13/2017 4:22:39 AM')
    ) AS t(testid1, testname1, testtimestamp1)
    **注意:**將 testdataset1testid1testname1testtimestamp1 替換為您的值。
  2. 對 STRING 值使用 CAST 函式來套用時間戳記篩選條件:
    SELECT * FROM testdataset1 WHERE testtimestamp1 < CAST('2020-07-14 00:00:00' AS timestamp)
    **注意:**將 testdataset1testtimestamp1 替換為您的值。

使用 CAST 時出現無效參數錯誤

如果您使用 CAST 將資料欄轉換為 TIMESTAMP 資料類型,那麼您可能會收到例外狀況錯誤。

您想轉換為 TIMESTAMP 的資料欄,其資料類型可能是 Athena 不支援的類型。使用 Trino 日期和時間函式,將查詢中的資料欄讀取為 DATE 或 TIMESTAMP。如需詳細資訊,請參閱 Trino 網站上的日期和時間函式及運算子

請完成下列步驟:

  1. 建立一個類似以下範例的資料表:
    CREATE TABLE testdataset2 AS SELECT * FROM
    (VALUES
            (1, 'a', '7/14/2020 8:22:39 AM'),
            (2, 'b', '8/01/2015 10:22:39 PM'),
            (3, 'c', '8/13/2017 4:22:39 AM')
    ) AS t(testid2, testname2, testtimestamp2)
    **注意:**將 testdataset2testid2testname2testtimestamp2 替換為您的值。
  2. 使用 Trino date_parse 函式將資料表轉換為 Java TIMESTAMP 格式:
    SELECT testid2, testname2, date_parse(testtimestamp2, '%m/%d/%Y %h:%i:%s %p') AS testtimestamp2 FROM testdataset2
    **注意:**將 testdataset2testid2testname2testtimestamp2 替換為您的值。

相關資訊

為什麼在 Amazon Athena 中查詢資料表時,TIMESTAMP 結果為空?

AWS 官方已更新 4 個月前