簡體   English   中英

Amazon Athena 表創建問題

[英]Amazon Athena table creation issue

我在 Athena 中有一張表,其中有 S3 作為源。

表列“Col1”之一的數據類型為字符串。

Col1
2019-11-21T12:26:13.422Z
2019-11-21T17:12:49.812Z
2019-11-21T17:51:38.299Z

我希望將此列轉換為timestamp的數據類型。

我運行了以下查詢:

SELECT
  from_iso8601_timestamp(col1) AS ABC
FROM "testtest"."layer2_keywords" 

然后我得到一個帶有時間戳數據類型的列:

col1

    col1
1   2019-11-12 10:11:08.017 UTC
2   2019-11-21 09:19:58.937 UTC
3   2019-11-22 09:23:47.786 UTC

我想用這個表輸出創建一個新表。

我嘗試了以下查詢:

CREATE TABLE NEW_TABLE AS
SLECT
  from_iso8601_timestamp(col1) AS ABC
FROM layer2_keywords

但是這個命令不是創建一個新表。

它拋出如下錯誤:

NOT_SUPPORTED:不支持的 Hive 類型:帶時區的時間戳。 在重試之前,您可能需要手動清理位置 's3://athena-query-results-layer2/XXXXXXXXXX/' 處的數據。 Athena 不會刪除您帳戶中的數據。

任何人都可以指導我如何從 AWS Athena 中的選擇查詢中獲取新表以進行字符串到時間戳的轉換?

我必須依賴 Athena,因為 Glue crawler 和 Glue ETL 都沒有將字符串轉換為時間戳轉換。

我得到了答案。

我使用CREATE TABLE AS SELECT (CTAS)。

請參閱: 在另一個查詢中使用 Amazon Athena 查詢的結果

但是有沒有一種方法可以在數據保存到 S3 之前使用,比如 GROK 表達式? 如果是,請任何人都可以提供一個分步程序來針對這個特定問題在 Glue 中編寫 GROK 嗎?

字符串到時間戳

字符串:2019-11-21T12:26:13.422Z

您可以使用 CAST() 函數如下:

CREATE TABLE NEW_TABLE AS
SLECT
  CAST(from_iso8601_timestamp(col1) AS TIMESTAMP) AS ABC
FROM layer2_keywords

我希望它能幫助你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM