Can I run update with select in Athena ICEBERG?

0

Hi, I'm using Athena Table - ICEBERG type. I would like to update with Select statement in order to update bunch of records at a time. For example: UPDATE skus_market_share_sum1 SET sales_kpis_sales_7d_agg = s.new_values FROM (SELECT SKU, new_values FROM other_table) s WHERE skus_market_share_sum1.SKU = s.SKU;

Currently I'm getting an error about the FROM statement. Is there any other option to update bunch of records using SQL and ICEBERG?

moshe
已提問 5 個月前檢視次數 527 次
2 個答案
3

Hello,

Update might not be suitable for changing/updating multiple rows in a transaction as Athena Iceberg UPDATE writes Iceberg position delete files and newly updated rows as data files in the same transaction. So, you can try using merge into statement for this approach. Details are given here.

MERGE INTO skus_market_share_sum1 m
USING other_table o 
ON o.SKU = m.SKU
WHEN MATCHED THEN 
  UPDATE SET m.sales_kpis_sales_7d_agg = o.new_values;

This will perform an update where rows match between the two tables based on the ON condition.

AWS
支援工程師
已回答 5 個月前
  • Thank you. Is there an option to use Merge into with specific select? like: select * from ( select *, row_number() over (.....) rn from <table>
    ) where rn = 1

    Thank you

2

Could run Merge into with Select, example below

MERGE INTO skus_market_share_sum1 t 
USING (
    select *
	from (
                       <>
                    )
                where rn = 1 AND category LIKE '%NNN%'
) s
ON (t.sku = s.sku)
WHEN MATCHED 
    THEN UPDATE 
        SET sales_kpis_sales_7d_agg = s.sales_kpis_sales_7d_agg
moshe
已回答 5 個月前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南