Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Aktualisieren von Iceberg-Datentabellen
Iceberg-Tabellendaten können direkt auf Athena mit INSERT
, UPDATE
, und DELETE
-Abfragen verwaltet werden. Jede Datenverwaltungstransaktion erzeugt einen neuen Snapshot, der über Zeitreisen abgefragt werden kann. Die UPDATE
- und DELETE
-Anweisungen folgen der Spezifikation zum Löschen von Positionen
Verwenden Sie die folgenden Befehle, um Datenverwaltungsvorgänge für Iceberg-Tabellen durchzuführen.
INSERT INTO
Fügt Daten in eine Iceberg-Tabelle ein. Athena Iceberg INSERT INTO
wird nach der gescannten Datenmenge genauso berechnet wie aktuelle INSERT INTO
-Abfragen für externe Hive-Tabellen. Um Daten in eine Iceberg-Tabelle einzufügen, verwenden Sie die folgende Syntax, wobei Abfragen
VALUES
(val1, val2, ...)
oder SELECT (col1, col2, …) FROM
[
sein kann. Informationen zur SQL-Syntax und semantischen Details finden Sie unter INSERT INTO.db_name
.]table_name
WHERE predicate
INSERT INTO [
db_name
.]table_name
[(col1, col2, …)]query
Die folgenden Beispiele fügen Werte in die Tabelle iceberg_table
ein.
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
schreibt Iceberg-Positionslöschdateien in eine Tabelle. Dies wird als merge-on-read Löschen bezeichnet. Im Gegensatz zu einem copy-on-write Löschvorgang ist ein merge-on-read Löschvorgang effizienter, da Dateidaten nicht neu geschrieben werden. Wenn Athena Iceberg-Daten liest, führt sie die Iceberg-Position-Löschdateien mit Datendateien zusammen, um die neueste Ansicht einer Tabelle zu erzeugen. Um diese Positionslöschdateien zu entfernen, können Sie die Komprimierungs-Aktion REWRITE DATA ausführen. DELETE
-Vorgänge werden nach der gescannten Datenmenge abgerechnet. Weitere Informationen zur Syntax finden Sie unter DELETE.
Im folgenden Beispiel werden Zeilen aus iceberg_table
gelöscht, die c3
als Wert für category
haben.
DELETE FROM iceberg_table WHERE category='c3'
UPDATE
Athena Iceberg UPDATE
schreibt Iceberg-Positions-Löschdateien und neu aktualisierte Zeilen als Datendateien in derselben Transaktion. UPDATE
kann man sich als Kombination von INSERT INTO
und DELETE
vorstellen. UPDATE
-Vorgänge werden nach der gescannten Datenmenge abgerechnet. Weitere Informationen zur Syntax finden Sie unter UPDATE.
Das folgende Beispiel aktualisiert die angegebenen Werte in der Tabelle iceberg_table
.
UPDATE iceberg_table SET category='c2' WHERE category='c1'
MERGE INTO
Aktualisiert, löscht oder fügt bedingt Zeilen in eine Iceberg-Tabelle ein. Eine einzige Anweisung kann Aktionen zum Aktualisieren, Löschen und Einfügen kombinieren. Weitere Informationen zur Syntax finden Sie unter MERGE INTO.
Anmerkung
MERGE INTO
ist transaktionsbasiert und wird nur für Apache-Iceberg-Tabellen in Athena-Engine-Version 3 unterstützt.
Das folgende Beispiel löscht alle Kunden aus der Tabelle t
, die sich in der Quelltabelle s
befinden.
MERGE INTO accounts t USING monthly_accounts_update s ON t.customer = s.customer WHEN MATCHED THEN DELETE
Im folgenden Beispiel wird die Zieltabelle t
mit Informationen aus Quelltabelle s
aktualisiert. Für Kundenzeilen in Tabelle t
, die über übereinstimmende Kundenzeilen in Tabelle s
verfügen, erhöht das Beispiel die Einkäufe in Tabelle t. Wenn Tabelle t
keine Übereinstimmung mit einer Kundenzeile in der Tabelle s
hat, fügt das Beispiel die Kundenzeile aus Tabelle s
in Tabelle t
ein.
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)
Im folgenden Beispiel wird die Zieltabelle t
bedingt mit Informationen aus der Quelltabelle s
aktualisiert. Das Beispiel löscht alle übereinstimmenden Zielzeilen, deren Quelladresse Centreville ist. Für alle weiteren übereinstimmenden Zeilen fügt das Beispiel die Quellkäufe hinzu und legt die Zieladresse auf die Quelladresse fest. Wenn es in der Zieltabelle keine Übereinstimmung gibt, fügt das Beispiel die Zeile aus der Quelltabelle ein.
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)