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ヶ月前529ビュー
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ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ