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
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
[
. Per la sintassi SQL e i dettagli semantici, consulta la pagina INSERT INTO.db_name
.]table_name
WHERE predicate
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. UPDATE
può 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)