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
posta 5 mesi fa530 visualizzazioni
2 Risposte
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
TECNICO DI SUPPORTO
con risposta 5 mesi fa
  • 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
con risposta 5 mesi fa

Accesso non effettuato. Accedi per postare una risposta.

Una buona risposta soddisfa chiaramente la domanda, fornisce un feedback costruttivo e incoraggia la crescita professionale del richiedente.

Linee guida per rispondere alle domande