

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Perbarui data tabel Gunung Es
<a name="querying-iceberg-updating-iceberg-table-data"></a>

Anda dapat mengelola data tabel Iceberg langsung di Athena dengan menggunakan`INSERT`,, `UPDATE` dan kueri. `DELETE` Setiap transaksi manajemen data menghasilkan snapshot baru, yang dapat ditanyakan menggunakan perjalanan waktu. `DELETE`Pernyataan `UPDATE` dan mengikuti spesifikasi [penghapusan posisi](https://iceberg.apache.org/spec/#position-delete-files) tingkat baris Iceberg format v2 dan menerapkan isolasi snapshot.

**catatan**  
Athena SQL saat ini tidak mendukung pendekatan ini. copy-on-write `DELETE FROM`Operasi`UPDATE`,`MERGE INTO`, dan selalu menggunakan merge-on-read pendekatan dengan penghapusan posisi, terlepas dari properti tabel yang ditentukan. Jika Anda memiliki properti tabel penyiapan seperti`write.update.mode`,`write.merge.mode`, dan/atau `write.delete.mode` untuk digunakan copy-on-write, kueri Anda tidak akan gagal karena Athena akan mengabaikannya dan terus menggunakannya. merge-on-read 

Gunakan perintah berikut untuk melakukan operasi manajemen data pada tabel Iceberg.

**Topics**
+ [MASUKKAN KE](querying-iceberg-insert-into.md)
+ [DELETE](querying-iceberg-delete.md)
+ [UPDATE](querying-iceberg-update.md)
+ [BERGABUNG MENJADI](querying-iceberg-merge-into.md)

# MASUKKAN KE
<a name="querying-iceberg-insert-into"></a>

Menyisipkan data ke dalam tabel Iceberg. Athena Iceberg dikenakan biaya `INSERT INTO` yang sama dengan `INSERT INTO` kueri saat ini untuk tabel Hive eksternal dengan jumlah data yang dipindai. Untuk menyisipkan data ke dalam tabel Iceberg, gunakan sintaks berikut, di mana *query* bisa salah satu atau. `VALUES (val1, val2, ...)` `SELECT (col1, col2, …) FROM [db_name.]table_name WHERE predicate` Untuk detail sintaks dan semantik SQL, lihat. [INSERT INTO](insert-into.md)

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

Contoh berikut menyisipkan nilai ke dalam tabel`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
<a name="querying-iceberg-delete"></a>

Athena Iceberg `DELETE` menulis posisi Iceberg menghapus file ke tabel. Ini dikenal sebagai merge-on-readpenghapusan. Berbeda dengan copy-on-writepenghapusan, merge-on-read penghapusan lebih efisien karena tidak menulis ulang data file. Ketika Athena membaca data Iceberg, ia menggabungkan posisi Iceberg menghapus file dengan file data untuk menghasilkan tampilan terbaru dari tabel. Untuk menghapus file penghapusan posisi ini, Anda dapat menjalankan [tindakan pemadatan REWRITE DATA](querying-iceberg-data-optimization.md#querying-iceberg-data-optimization-rewrite-data-action). `DELETE`operasi dibebankan oleh jumlah data yang dipindai. Untuk sintaks, lihat [DELETE](delete-statement.md).

Contoh berikut menghapus baris dari `iceberg_table` yang memiliki `c3` nilai untuk`category`.

```
DELETE FROM iceberg_table WHERE category='c3'
```

# UPDATE
<a name="querying-iceberg-update"></a>

Athena Iceberg `UPDATE` menulis file menghapus posisi Iceberg dan baris yang baru diperbarui sebagai file data dalam transaksi yang sama. `UPDATE`dapat dibayangkan sebagai kombinasi dari `INSERT INTO` dan`DELETE`. `UPDATE`operasi dibebankan oleh jumlah data yang dipindai. Untuk sintaks, lihat [UPDATE](update-statement.md).

Contoh berikut memperbarui nilai-nilai yang ditentukan dalam tabel`iceberg_table`.

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

# BERGABUNG MENJADI
<a name="querying-iceberg-merge-into"></a>

Secara kondisional memperbarui, menghapus, atau menyisipkan baris ke dalam tabel Iceberg. Sebuah pernyataan tunggal dapat menggabungkan tindakan pembaruan, menghapus, dan menyisipkan. Untuk sintaks, lihat [BERGABUNG MENJADI](merge-into-statement.md).

**catatan**  
`MERGE INTO`bersifat transaksional dan hanya didukung untuk tabel Apache Iceberg di mesin Athena versi 3.

Contoh berikut menghapus semua pelanggan dari tabel `t` yang ada di tabel `s` sumber.

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

Contoh berikut memperbarui tabel target `t` dengan informasi pelanggan dari tabel sumber`s`. Untuk baris pelanggan dalam tabel `t` yang memiliki baris pelanggan yang cocok dalam tabel`s`, contoh menambah pembelian dalam tabel t. Jika tabel tidak `t` memiliki kecocokan untuk baris pelanggan dalam tabel`s`, contoh menyisipkan baris pelanggan dari tabel `s` ke dalam tabel`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)
```

Contoh berikut secara kondisional memperbarui tabel target `t` dengan informasi dari tabel `s` sumber. Contoh menghapus setiap baris target yang cocok yang alamat sumbernya adalah Centreville. Untuk semua baris lain yang cocok, contoh menambahkan pembelian sumber dan menetapkan alamat target ke alamat sumber. Jika tidak ada kecocokan dalam tabel target, contoh menyisipkan baris dari tabel sumber.

```
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)
```