Aggiornamento dati di tabelle Iceberg - Amazon Athena

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Aggiornamento dati di tabelle Iceberg

I dati della tabella Iceberg possono essere gestiti direttamente su Athena utilizzando le query INSERT, UPDATE e DELETE. Ogni transazione di gestione dei dati produce un nuovo snapshot, che può essere interrogato utilizzando una query temporale. Le istruzioni UPDATE e DELETE seguono le specifiche di eliminazione della posizione a livello di riga del formato Iceberg v2 e applicano l'isolamento della snapshot.

Utilizzare i seguenti comandi per eseguire operazioni di gestione dei dati sulle tabelle Iceberg.

INSERT INTO

Inserisce i dati in una tabella Iceberg. Ad Athena Iceberg INSERT INTO si applica una tariffa uguale alle query INSERT INTO attuali per le tabelle Hive esterne in base alla quantità di dati scansionati. Per inserire dati in una tabella Iceberg, utilizza la seguente sintassi, dove query può essere VALUES (val1, val2, ...) o SELECT (col1, col2, …) FROM [db_name.]table_name WHERE predicate. Per la sintassi SQL e i dettagli semantici, consulta la pagina INSERT INTO.

INSERT INTO [db_name.]table_name [(col1, col2, …)] query

Negli esempi seguenti vengono inseriti i valori nella tabella iceberg_table.

INSERT INTO iceberg_table VALUES (1,'a','c1')
INSERT INTO iceberg_table (col1, col2, ...) VALUES (val1, val2, ...)
INSERT INTO iceberg_table SELECT * FROM another_table

DELETE

Athena Iceberg DELETE scrive i file di eliminazione della posizione Iceberg in una tabella. Questa operazione è nota come eliminazione. merge-on-read A differenza di un'copy-on-writeeliminazione, un' merge-on-read eliminazione è più efficiente perché non riscrive i dati del file. Quando Athena legge i dati Iceberg, unisce i file di eliminazione della posizione Iceberg con i file di dati per produrre la visualizzazione più recente di una tabella. Per rimuovere questi file di eliminazione della posizione, puoi eseguire Azione di compattazione REWRITE DATA. Le operazioni DELETE vengono addebitate dalla quantità di dati analizzati. Per la sintassi, consulta DELETE.

L'esempio seguente elimina le righe da iceberg_table che hanno c3 come valore per category.

DELETE FROM iceberg_table WHERE category='c3'

UPDATE

Athena Iceberg UPDATE scrive i file di eliminazione della posizione Iceberg e le righe appena aggiornate come file di dati nella stessa transazione. UPDATEpuò essere immaginato come una combinazione di INSERT INTO e DELETE. Le operazioni UPDATE vengono addebitate dalla quantità di dati analizzati. Per la sintassi, consulta UPDATE.

L'esempio seguente aggiorna i valori specificati nella tabella iceberg_table.

UPDATE iceberg_table SET category='c2' WHERE category='c1'

MERGE INTO

Aggiorna, elimina o inserisce in modo condizionale righe in una tabella Iceberg. Una singola istruzione può combinare operazioni di aggiornamento, eliminazione e inserimento. Per la sintassi, consulta MERGE INTO.

Nota

L'istruzione MERGE INTO è transazionale ed è supportata solo per le tabelle Apache Iceberg nella versione 3 del motore Athena.

L'esempio seguente elimina tutti i clienti dalla tabella t che si trova nella tabella di origine s.

MERGE INTO accounts t USING monthly_accounts_update s ON t.customer = s.customer WHEN MATCHED THEN DELETE

L'esempio seguente aggiorna la tabella di destinazione t con le informazioni sui clienti dalla tabella di origine s. Per le righe dei clienti nella tabella t che contengono righe relative ai clienti nella tabella s, l'esempio incrementa gli acquisti nella tabella t. Se la tabella t non corrisponde a una riga del cliente nella tabella s, l'esempio inserisce la riga del cliente dalla tabella s nella tabella t.

MERGE INTO accounts t USING monthly_accounts_update s ON (t.customer = s.customer) WHEN MATCHED THEN UPDATE SET purchases = s.purchases + t.purchases WHEN NOT MATCHED THEN INSERT (customer, purchases, address) VALUES(s.customer, s.purchases, s.address)

L'esempio seguente aggiorna in modo condizionale la tabella di destinazione t con le informazioni dalla tabella di origine s. L'esempio elimina qualsiasi riga di destinazione corrispondente il cui indirizzo di origine è Centreville. Per tutte le altre righe corrispondenti, l'esempio aggiunge gli acquisti di origine e imposta l'indirizzo di destinazione sull'indirizzo di origine. Se non c'è alcuna corrispondenza nella tabella di destinazione, l'esempio inserisce la riga dalla tabella di origine.

MERGE INTO accounts t USING monthly_accounts_update s ON (t.customer = s.customer) WHEN MATCHED AND s.address = 'Centreville' THEN DELETE WHEN MATCHED THEN UPDATE SET purchases = s.purchases + t.purchases, address = s.address WHEN NOT MATCHED THEN INSERT (customer, purchases, address) VALUES(s.customer, s.purchases, s.address)