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
asked 4 months ago467 views
2 Answers
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
SUPPORT ENGINEER
answered 4 months ago
  • 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
answered 4 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions