簡體   English   中英

如果新分區不存在,如何修改 CTAS 查詢以將查詢結果附加到表中? - 雅典娜

[英]How to modify CTAS query to append query results to table based on if new partition doesn't exist? - Athena

我有一個要每天執行的查詢,該查詢將按執行日期進行分區。 此查詢的結果應附加到同一個表中。

我的想法是理想情況下具有類似於CREATE TABLE IF NOT EXISTS命令的東西,如果分區尚不存在,則每天通過新分區將數據添加到現有表中,但我不知道我如何能夠將此集成到我的查詢中。

我的查詢:

CREATE TABLE IF NOT EXISTS db_name.table_name
WITH (
   external_location = 's3://my-query-results-location/',
   format = 'PARQUET',
   parquet_compression = 'SNAPPY',
   partitioned_by = ARRAY['date_executed'])
AS
SELECT
{columns_that_I_am_selecting_here_including_'date_executed'}

這樣做是在執行的第一天創建一個新表,但隨后幾天沒有任何反應,我假設是因為CREATE TABLE IF NOT EXISTS驗證該表已經存在並且不繼續執行邏輯。

有沒有辦法修改我的查詢以在執行的第一天創建一個表,並在隨后的每一天通過一個新分區附加結果?

我很確定ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION不適用於我的用例,因為我正在運行 CTAS 查詢。

您可以簡單地使用INSERT INTO existing_table SELECT...

大概您的表已經分區,因此在 SELECT 中包含該分區列,Amazon Athena 會自動將數據放在正確的目錄中。

例如,您可能包含這樣的 hte 列: SELECT ... CURRENT_DATE as date_executed

請參閱: 插入 - 亞馬遜雅典娜

暫無
暫無

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

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