

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

# Gunakan transaksi ACID Athena
<a name="acid-transactions"></a>

Istilah “transaksi ACID” mengacu pada seperangkat properti ([atomisitas](https://en.wikipedia.org/wiki/Atomicity_(database_systems)), [konsistensi](https://en.wikipedia.org/wiki/Consistency_(database_systems)), [isolasi](https://en.wikipedia.org/wiki/Isolation_(database_systems)), dan [daya tahan](https://en.wikipedia.org/wiki/Durability_(database_systems))) yang memastikan integritas data dalam transaksi database. Transaksi ACID memungkinkan beberapa pengguna untuk secara bersamaan dan andal menambah dan menghapus objek Amazon S3 secara atom, sambil mengisolasi kueri yang ada dengan mempertahankan konsistensi baca untuk kueri terhadap data lake. Transaksi Athena ACID menambahkan dukungan tabel tunggal untuk menyisipkan, menghapus, memperbarui, dan operasi perjalanan waktu ke bahasa manipulasi data SQL Athena (DML/bahasa manipulasi data SQL). Anda dan beberapa pengguna bersamaan dapat menggunakan transaksi Athena ACID untuk membuat modifikasi tingkat baris yang andal pada data Amazon S3. Transaksi Athena secara otomatis mengelola semantik dan koordinasi penguncian dan tidak memerlukan solusi penguncian catatan khusus.

Transaksi Athena ACID dan sintaks SQL yang sudah dikenal menyederhanakan pembaruan data bisnis dan peraturan Anda. Misalnya, untuk menanggapi permintaan penghapusan data, Anda dapat melakukan operasi SQL`DELETE`. Untuk membuat koreksi catatan manual, Anda dapat menggunakan satu `UPDATE` pernyataan. Untuk memulihkan data yang baru saja dihapus, Anda dapat mengeluarkan kueri perjalanan waktu menggunakan `SELECT` pernyataan.

Karena dibangun di atas format tabel bersama, transaksi Athena ACID kompatibel dengan layanan dan mesin lain seperti Amazon [EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html) dan [Apache Spark](https://spark.apache.org/) yang juga mendukung format tabel bersama.

Transaksi Athena tersedia melalui konsol Athena, operasi API, dan driver ODBC dan JDBC.

**Topics**
+ [Tabel Query Linux Foundation Delta Lake](delta-lake-tables.md)
+ [Kueri kumpulan data Apache Hudi](querying-hudi.md)
+ [Tabel Query Apache Iceberg](querying-iceberg.md)

# Tabel Query Linux Foundation Delta Lake
<a name="delta-lake-tables"></a>

Linux Foundation [Delta Lake](https://delta.io/) adalah format tabel untuk analitik data besar. Anda dapat menggunakan Amazon Athena untuk membaca tabel Delta Lake yang disimpan di Amazon S3 secara langsung tanpa harus membuat file manifes atau menjalankan pernyataan. `MSCK REPAIR`

Format Delta Lake menyimpan nilai minimum dan maksimum per kolom dari setiap file data. Implementasi Athena memanfaatkan informasi ini untuk memungkinkan melewatkan file pada predikat untuk menghilangkan file yang tidak diinginkan dari pertimbangan.

## Pertimbangan dan batasan
<a name="delta-lake-tables-considerations-and-limitations"></a>

Dukungan Delta Lake di Athena memiliki pertimbangan dan batasan berikut:
+ **Tabel dengan AWS Glue katalog saja** — Dukungan Danau Delta Asli hanya didukung melalui tabel yang AWS Glue terdaftar. Jika Anda memiliki meja Danau Delta yang terdaftar di metastore lain, Anda masih dapat menyimpannya dan memperlakukannya sebagai metastore utama Anda. Karena metadata Delta Lake disimpan dalam sistem file (misalnya, di Amazon S3) daripada di metastore, Athena hanya memerlukan properti lokasi untuk membaca dari tabel Delta Lake Anda. AWS Glue 
+ **Hanya mesin V3** - Kueri Delta Lake hanya didukung pada mesin Athena versi 3. Anda harus memastikan bahwa workgroup yang Anda buat dikonfigurasi untuk menggunakan mesin Athena versi 3.
+ **Tidak ada dukungan perjalanan waktu** - Tidak ada dukungan untuk pertanyaan yang menggunakan kemampuan perjalanan waktu Delta Lake.
+ **Hanya baca** - Tulis pernyataan DMLseperti`UPDATE`,`INSERT`, atau tidak `DELETE` didukung.
+ **Dukungan Lake Formation** — Integrasi Lake Formation tersedia untuk tabel Delta Lake dengan skema mereka yang sinkron. AWS Glue*Untuk informasi selengkapnya, lihat [Menggunakan AWS Lake Formation Amazon Athena](https://docs.aws.amazon.com/lake-formation/latest/dg/athena-lf.html) dan [Mengatur izin untuk tabel Delta Lake](https://docs.aws.amazon.com/lake-formation/latest/dg/set-up-delta-table.html) di Panduan Pengembang.AWS Lake Formation *
+ **Dukungan DDL terbatas** - Pernyataan DDL berikut didukung:`CREATE EXTERNAL TABLE`,,`SHOW COLUMNS`, `SHOW TBLPROPERTIES` `SHOW PARTITIONS``SHOW CREATE TABLE`, dan. `DESCRIBE` Untuk informasi tentang menggunakan `CREATE EXTERNAL TABLE` pernyataan, lihat [Memulai dengan tabel Delta Lake](delta-lake-tables-getting-started.md) bagian.
+ **Melewati objek Amazon Glacier tidak didukung - Jika objek** di tabel Delta Lake Linux Foundation berada dalam kelas penyimpanan Amazon Glacier, menyetel properti tabel agar tidak berpengaruh. `read_restored_glacier_objects` `false`

  Misalnya, Anda mengeluarkan perintah berikut:

  ```
  ALTER TABLE table_name SET TBLPROPERTIES ('read_restored_glacier_objects' = 'false')
  ```

  Untuk tabel Iceberg dan Delta Lake, perintah menghasilkan kesalahan Kunci properti tabel Tidak didukung: read\$1restored\$1glacier\$1objects. Untuk tabel Hudi, `ALTER TABLE` perintah tidak menghasilkan kesalahan, tetapi objek Amazon Glacier masih belum dilewati. Menjalankan `SELECT` kueri setelah `ALTER TABLE` perintah terus mengembalikan semua objek.
+ Tabel **terenkripsi - Athena tidak mendukung membaca tabel** Delta Lake terenkripsi CSE-KMS secara asli. Ini termasuk pernyataan SELECT dan pernyataan DDL.

### Versi Danau Delta dan Athena
<a name="delta-lake-tables-versioning"></a>

Athena tidak menggunakan [versi yang tercantum dalam dokumentasi Delta](https://docs.delta.io/latest/releases.html) Lake. Untuk menentukan apakah tabel Danau Delta Anda kompatibel dengan Athena, pertimbangkan dua karakteristik berikut:
+ **Versi pembaca** - Setiap meja Delta Lake memiliki versi pembaca. Saat ini, ini adalah angka antara 1 dan 3. Pertanyaan yang menyertakan tabel dengan versi pembaca yang tidak didukung Athena akan gagal.
+ **Fitur tabel** — Setiap meja Danau Delta juga dapat mendeklarasikan serangkaian fitur. reader/writer Karena dukungan Athena terhadap Delta Lake hanya bisa dibaca, kompatibilitas fitur penulis tabel tidak berlaku. Namun, kueri pada tabel dengan fitur pembaca tabel yang tidak didukung akan gagal.

Tabel berikut menunjukkan versi pembaca Delta Lake dan fitur pembaca tabel Delta Lake yang didukung Athena.


****  

| Jenis kueri | Versi pembaca yang didukung | Fitur pembaca yang didukung | 
| --- | --- | --- | 
| DQL (pernyataan SELECT) | <= 3 | [Pemetaan kolom](https://docs.delta.io/latest/delta-column-mapping.html)[, [TimestampNTZ](https://github.com/delta-io/delta/blob/master/PROTOCOL.md#timestamp-without-timezone-timestampntz), vektor penghapusan](https://docs.delta.io/latest/delta-deletion-vectors.html) | 
| DDL | <= 1 | Tidak berlaku. Fitur pembaca hanya dapat dideklarasikan pada tabel dengan versi pembaca 2 atau lebih besar. | 
+ Untuk daftar fitur tabel Delta Lake, lihat [Nama fitur yang valid dalam fitur tabel](https://github.com/delta-io/delta/blob/master/PROTOCOL.md#valid-feature-names-in-table-features) di .com GitHub
+ Untuk daftar fitur Delta Lake berdasarkan versi protokol, lihat [Fitur berdasarkan versi protokol](https://docs.delta.io/latest/versioning.html#features-by-protocol-version) di GitHub .com.

Untuk membuat tabel Delta Lake di Athena dengan versi pembaca yang lebih besar dari 1, lihat. [Sinkronkan metadata Delta Lake](delta-lake-tables-syncing-metadata.md)

**Topics**
+ [Pertimbangan dan batasan](#delta-lake-tables-considerations-and-limitations)
+ [Tipe data kolom yang didukung](delta-lake-tables-supported-data-types-columns.md)
+ [Memulai dengan tabel Delta Lake](delta-lake-tables-getting-started.md)
+ [Kueri tabel Delta Lake dengan SQL](delta-lake-tables-querying.md)
+ [Sinkronkan metadata Delta Lake](delta-lake-tables-syncing-metadata.md)
+ [Sumber daya tambahan](delta-lake-tables-additional-resources.md)

# Tipe data kolom yang didukung
<a name="delta-lake-tables-supported-data-types-columns"></a>

Bagian ini menjelaskan tipe data yang didukung untuk kolom non-partisi dan partisi. 

## Tipe data kolom non-partisi yang didukung
<a name="delta-lake-tables-supported-data-types-non-partition-columns"></a>

Untuk kolom non-partisi, semua tipe data yang didukung Athena `CHAR` kecuali didukung `CHAR` (tidak didukung dalam protokol Delta Lake itu sendiri). Tipe data yang didukung meliputi:

```
boolean
tinyint
smallint
integer
bigint
double
float
decimal
varchar
string
binary
date
timestamp
array
map
struct
```

## Tipe data kolom partisi yang didukung
<a name="delta-lake-tables-supported-data-types-partition-columns"></a>

Untuk kolom partisi, Athena mendukung tabel dengan tipe data berikut:

```
boolean
integer
smallint
tinyint
bigint
decimal
float
double
date
timestamp
varchar
```

Untuk informasi selengkapnya tentang tipe data di Athena, lihat. [Tipe data di Amazon Athena](data-types.md)

# Memulai dengan tabel Delta Lake
<a name="delta-lake-tables-getting-started"></a>

Agar dapat ditanyakan, meja Danau Delta Anda harus ada di. AWS Glue Jika tabel Anda berada di Amazon S3 tetapi tidak di AWS Glue, jalankan `CREATE EXTERNAL TABLE` pernyataan menggunakan sintaks berikut. Jika tabel Anda sudah ada di AWS Glue (misalnya, karena Anda menggunakan Apache Spark atau mesin lain dengan AWS Glue), Anda dapat melewati langkah ini. Perhatikan kelalaian definisi kolom, SerDe pustaka, dan properti tabel lainnya. Tidak seperti tabel Hive tradisional, metadata tabel Delta Lake disimpulkan dari log transaksi Delta Lake dan disinkronkan langsung ke. AWS Glue

```
CREATE EXTERNAL TABLE
  [db_name.]table_name
  LOCATION 's3://amzn-s3-demo-bucket/your-folder/'
  TBLPROPERTIES ('table_type' = 'DELTA')
```

**catatan**  
Pernyataan ini tidak kompatibel dengan bucket S3 yang mengaktifkan pembayaran pemohon. Jika Anda ingin membuat tabel Delta Lake terhadap bucket S3 dengan pembayaran pemohon diaktifkan, ikuti instruksi dan pernyataan DDL di. [Sinkronkan metadata Delta Lake](delta-lake-tables-syncing-metadata.md)
Untuk tabel Delta Lake, `CREATE TABLE` pernyataan yang mencakup lebih dari `table_type` properti `LOCATION` dan tidak diperbolehkan.

# Kueri tabel Delta Lake dengan SQL
<a name="delta-lake-tables-querying"></a>

Untuk menanyakan tabel Delta Lake, gunakan sintaks SQL `SELECT` standar:

```
[ WITH with_query [, ...] ]SELECT [ ALL | DISTINCT ] select_expression [, ...]
[ FROM from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
[ HAVING condition ]
[ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
[ ORDER BY expression [ ASC | DESC ] [ NULLS FIRST | NULLS LAST] [, ...] ]
[ OFFSET count [ ROW | ROWS ] ]
[ LIMIT [ count | ALL ] ]
```

Untuk informasi selengkapnya tentang `SELECT` sintaks, lihat [SELECT](select.md) di dokumentasi Athena.

Format Delta Lake menyimpan nilai minimum dan maksimum per kolom dari setiap file data. Athena memanfaatkan informasi ini untuk memungkinkan file melewatkan predikat untuk menghilangkan file yang tidak perlu dari pertimbangan.

# Sinkronkan metadata Delta Lake
<a name="delta-lake-tables-syncing-metadata"></a>

Athena menyinkronkan metadata tabel, termasuk skema, kolom partisi, dan properti tabel, jika AWS Glue Anda menggunakan Athena untuk membuat tabel Delta Lake Anda. Seiring berjalannya waktu, metadata ini dapat kehilangan sinkronisasi dengan metadata tabel yang mendasarinya di log transaksi. Untuk memperbarui tabel Anda, Anda dapat memilih salah satu opsi berikut:
+ Gunakan AWS Glue crawler untuk tabel Delta Lake. Untuk informasi selengkapnya, lihat [Memperkenalkan dukungan tabel Delta Lake asli dengan AWS Glue crawler](https://aws.amazon.com/blogs/big-data/introducing-native-delta-lake-table-support-with-aws-glue-crawlers/) di *Blog AWS Big Data* dan [Menjadwalkan AWS Glue crawler](https://docs.aws.amazon.com/glue/latest/dg/schedule-crawler.html) di Panduan Pengembang. AWS Glue 
+ Jatuhkan dan buat ulang tabel di Athena.
+ Gunakan SDK, CLI, AWS Glue atau konsol untuk memperbarui skema secara manual. AWS Glue

Perhatikan bahwa fitur-fitur berikut mengharuskan AWS Glue skema Anda untuk selalu memiliki skema yang sama dengan log transaksi:
+ Lake Formation
+ Tampilan
+ Filter baris dan kolom

Jika alur kerja Anda tidak memerlukan fungsionalitas ini, dan Anda memilih untuk tidak mempertahankan kompatibilitas ini, Anda dapat menggunakan `CREATE TABLE` DDL di Athena dan kemudian menambahkan jalur Amazon S3 sebagai parameter di. SerDe AWS Glue

## Buat tabel Delta Lake menggunakan AWS Glue Athena dan konsol
<a name="delta-lake-tables-syncing-metadata-console"></a>

Anda dapat menggunakan prosedur berikut untuk membuat tabel Danau Delta dengan Athena AWS Glue dan konsol.

**Untuk membuat tabel Danau Delta menggunakan AWS Glue Athena dan konsol**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Di editor kueri Athena, gunakan DDL berikut untuk membuat tabel Delta Lake Anda. Perhatikan bahwa saat menggunakan metode ini, nilai untuk `TBLPROPERTIES` harus `'spark.sql.sources.provider' = 'delta'` dan tidak`'table_type' = 'delta'`.

   Perhatikan bahwa skema yang sama ini (dengan satu kolom bernama `col` tipe`array<string>`) dimasukkan saat Anda menggunakan Apache Spark (Athena untuk Apache Spark) atau sebagian besar mesin lain untuk membuat tabel Anda.

   ```
   CREATE EXTERNAL TABLE
      [db_name.]table_name(col array<string>)
      LOCATION 's3://amzn-s3-demo-bucket/your-folder/'
      TBLPROPERTIES ('spark.sql.sources.provider' = 'delta')
   ```

1. Buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Di panel navigasi, pilih **Katalog Data**, **Tabel**.

1. Dalam daftar tabel, pilih tautan untuk tabel Anda.

1. Pada halaman untuk tabel, pilih **Tindakan**, **Edit tabel**.

1. Di bagian **parameter Serde**, tambahkan kunci **path** dengan nilai**s3://amzn-s3-demo-bucket/*your-folder*/**.

1. Pilih **Simpan**.

## Buat tabel Delta Lake menggunakan AWS CLI
<a name="delta-lake-tables-syncing-metadata-cli"></a>

Untuk membuat tabel Delta Lake menggunakan AWS CLI, masukkan perintah seperti berikut ini.

```
aws glue create-table --database-name dbname \
    --table-input '{"Name" : "tablename", "StorageDescriptor":{
            "Columns" : [
                {
                    "Name": "col",
                    "Type": "array<string>"
                }
            ],
            "Location" : "s3://amzn-s3-demo-bucket/<prefix>/",
            "SerdeInfo" : {
                "Parameters" : {
                    "serialization.format" : "1",
                    "path" : "s3://amzn-s3-demo-bucket/<prefix>/"
                }
            }
        },
        "PartitionKeys": [],
        "TableType": "EXTERNAL_TABLE",
        "Parameters": {
            "EXTERNAL": "TRUE",
            "spark.sql.sources.provider": "delta"
        }
    }'
```

# Sumber daya tambahan
<a name="delta-lake-tables-additional-resources"></a>

*Untuk diskusi tentang penggunaan tabel Delta Lake dengan AWS Glue dan menanyakannya dengan Athena, lihat [Menangani operasi data UPSERT menggunakan Delta Lake sumber terbuka](https://aws.amazon.com/blogs/big-data/handle-upsert-data-operations-using-open-source-delta-lake-and-aws-glue/) dan di Blog Big Data. AWS GlueAWS *

# Kueri kumpulan data Apache Hudi
<a name="querying-hudi"></a>

[https://hudi.incubator.apache.org/](https://hudi.incubator.apache.org/) adalah kerangka kerja manajemen data sumber terbuka yang menyederhanakan pemrosesan data tambahan. Tindakan sisipan level catatan, pembaruan, upsert, dan hapus diproses jauh lebih terperinci, mengurangi overhead. `Upsert` mengacu pada kemampuan untuk menyisipkan catatan ke dalam set data yang ada jika mereka belum ada atau untuk memperbaruinya jika mereka sudah ada.

Hudi menangani peristiwa penyisipan dan pembaruan data tanpa membuat banyak file kecil yang dapat menyebabkan masalah performa untuk analisis. Apache Hudi secara otomatis melacak perubahan dan menggabungkan file sehingga ukurannya tetap optimal. Ini untuk menghindari kebutuhan untuk membangun solusi kustom yang memantau dan menulis ulang banyak file kecil ke dalam file besar yang lebih sedikit.

Set data Hudi cocok untuk kasus penggunaan berikut:
+ Mematuhi peraturan privasi seperti [Peraturan Perlindungan Data Umum](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (GDPR) dan [California Consumer Privacy Act](https://en.wikipedia.org/wiki/California_Consumer_Privacy_Act) (CCPA) yang memberlakukan hak orang untuk menghapus informasi pribadi atau mengubah cara data mereka digunakan.
+ Bekerja dengan data streaming dari sensor dan perangkat Internet untuk Segala (IoT) lainnya yang memerlukan penyisipan data dan pembaruan peristiwa tertentu.
+ Mengimplementasikan [sistem change data capture (CDC)](https://en.wikipedia.org/wiki/Change_data_capture).

Sebuah set data Hudi dapat menjadi salah satu dari tipe berikut:
+ **Copy on Write (CoW)** – Data disimpan dalam format kolom (Parquet), dan setiap pembaruan membuat versi file baru selama penulisan.
+ **Merge on Read (MoR)** – Data disimpan menggunakan kombinasi kolom (Parquet) dan format berbasis baris (Avro). Pembaruan dicatat ke file `delta` berbasis baris dan dipadatkan sesuai kebutuhan untuk membuat file kolom versi baru.

Dengan set data CoW, setiap kali ada pembaruan ke catatan, file yang berisi catatan ditulis ulang dengan nilai yang diperbarui. Dengan set data MoR, setiap kali ada pembaruan, Hudi hanya menulis baris untuk catatan yang berubah. MoR lebih cocok untuk beban kerja tulis atau perubahan berat dengan lebih sedikit pembacaan. CoW lebih cocok untuk beban kerja pembacaan berat pada data yang jarang berubah.

Hudi menyediakan tiga tipe kueri untuk mengakses data:
+ **Kueri snapshot** — Kueri yang melihat snapshot terbaru dari tabel sebagai tindakan komit atau pemadatan yang diberikan. Untuk tabel MoR, kueri snapshot memapar status terbaru tabel dengan menggabungkan file dasar dan delta potongan file terbaru pada pada saat kueri. 
+ **Kueri tambahan — Kueri** hanya melihat data baru yang ditulis ke tabel, karena komit/pemadatan yang diberikan. Ini secara efektif menyediakan pengaliran perubahan untuk mengaktifkan data pipeline tambahan.
+ **Baca kueri yang dioptimalkan** — Untuk tabel MoR, kueri melihat data terbaru yang dipadatkan. Untuk tabel CoW, kueri melihat data terbaru yang dikomit.

Tabel berikut menunjukkan kemungkinan tipe kueri Hudi untuk setiap tipe tabel.


| Jenis tabel | Kemungkinan jenis kueri Hudi | 
| --- | --- | 
| Copy On Write | Snapshot, tambahan | 
| Merge On Read | snapshot, tambahan, dioptimalkan baca | 

Untuk informasi selengkapnya tentang pengorbanan antara tipe tabel dan kueri, lihat Jenis [Tabel & Kueri](https://hudi.apache.org/docs/table_types/) dalam dokumentasi Apache Hudi.

## Perubahan terminologi Hudi: Tampilan sekarang menjadi kueri
<a name="querying-hudi-hudi-dataset-table-types-terminology"></a>

Mulai dari rilis Apache Hudi versi 0.5.1, apa yang sebelumnya disebut tampilan sekarang disebut kueri. Tabel berikut merangkum perubahan antara istilah lama dan baru.


| Istilah lama | Istilah baru | 
| --- | --- | 
|  CoW: tampilan dioptimalkan baca MoR: tampilan waktu nyata  |  Kueri snapshot  | 
| Tampilan tambahan | Kueri tambahan | 
| Tampilan dioptimalkan baca MoR | Kueri dioptimalkan baca | 

**Topics**
+ [Perubahan terminologi Hudi: Tampilan sekarang menjadi kueri](#querying-hudi-hudi-dataset-table-types-terminology)
+ [Pertimbangan dan batasan](querying-hudi-in-athena-considerations-and-limitations.md)
+ [Copy on write (CoW) buat contoh tabel](querying-hudi-copy-on-write-create-table-examples.md)
+ [Gabungkan pada read (MoR) buat contoh tabel](querying-hudi-merge-on-read-create-table-examples.md)
+ [Gunakan metadata Hudi untuk meningkatkan kinerja](querying-hudi-metadata-table.md)
+ [Sumber daya tambahan](querying-hudi-additional-resources.md)

# Pertimbangan dan batasan
<a name="querying-hudi-in-athena-considerations-and-limitations"></a>

Saat Anda menggunakan Athena untuk membaca tabel Apache Hudi, pertimbangkan poin-poin berikut.
+ **Operasi baca dan tulis** - Athena dapat membaca kumpulan data Hudi yang dipadatkan tetapi tidak menulis data Hudi.
+ **Versi Hudi** - Athena mendukung Hudi versi 0.14.0 (default) dan 0.15.0. Athena tidak dapat menjamin kompatibilitas baca dengan tabel yang dibuat dengan versi Hudi yang lebih baru. Untuk informasi selengkapnya tentang fitur dan pembuatan versi Hudi, lihat [dokumentasi Hudi di situs web Apache](https://hudi.apache.org/). Perhatikan bahwa versi 0.15.0 dari konektor Hudi di Athena tidak mendukung tabel bootstrap. Untuk menggunakan 0.15.0 dari konektor Hudi, atur properti tabel berikut:

  ```
  ALTER TABLE table_name SET TBLPROPERTIES ('athena_enable_native_hudi_connector_implementation' = 'true')
  ```
+ **Kueri lintas akun** - Versi 0.15.0 dari konektor Hudi tidak mendukung kueri lintas akun.
+ **Jenis kueri** — Saat ini, Athena mendukung kueri snapshot dan membaca kueri yang dioptimalkan, tetapi bukan kueri tambahan. Pada tabel MoR, semua data yang terpapar untuk mengkueri dioptimalkan baca dipadatkan. Ini memberikan performa yang baik tetapi tidak termasuk komit delta terbaru. Kueri snapshot berisi data terbaru tetapi dikenai beberapa overhead komputasi, yang membuat performa kueri ini tidak terlalu baik. Untuk informasi selengkapnya tentang pengorbanan antara tipe tabel dan kueri, lihat Jenis [Tabel & Kueri](https://hudi.apache.org/docs/table_types/) dalam dokumentasi Apache Hudi.
+ **Pertanyaan tambahan - Athena tidak mendukung kueri** tambahan.
+ **CTAS** — Athena tidak [mendukung](ctas.md) CTAS [INSERT INTO](insert-into.md) atau data Hudi. Jika Anda ingin dukungan Athena untuk menulis set data Hudi, kirim umpan balik ke athena-feedback@amazon.com.

  Untuk informasi selengkapnya tentang penulisan data Hudi, lihat sumber daya berikut:
  + [Bekerja dengan kumpulan data Hudi di](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hudi-work-with-dataset.html) Panduan Rilis [EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/) Amazon.
  + [Menulis Data](https://hudi.apache.org/docs/0.8.0/writing_data.html) dalam dokumentasi Apache Hudi.
+ **MSCK REPAIR TABLE** - Menggunakan MSCK REPAIR TABLE pada tabel Hudi di Athena tidak didukung. Jika Anda perlu memuat tabel Hudi yang tidak dibuat AWS Glue, gunakan[ALTER TABLE ADD PARTITION](alter-table-add-partition.md).
+ **Melewatkan objek Amazon Glacier tidak didukung - Jika objek** di tabel Apache Hudi berada dalam kelas penyimpanan Amazon Glacier, menyetel properti tabel agar tidak berpengaruh. `read_restored_glacier_objects` `false`

  Misalnya, Anda mengeluarkan perintah berikut:

  ```
  ALTER TABLE table_name SET TBLPROPERTIES ('read_restored_glacier_objects' = 'false')
  ```

  Untuk tabel Iceberg dan Delta Lake, perintah menghasilkan kesalahan Kunci properti tabel Tidak didukung: read\$1restored\$1glacier\$1objects. Untuk tabel Hudi, `ALTER TABLE` perintah tidak menghasilkan kesalahan, tetapi objek Amazon Glacier masih belum dilewati. Menjalankan `SELECT` kueri setelah `ALTER TABLE` perintah terus mengembalikan semua objek.
+ **Kueri stempel waktu** — Saat ini, kueri yang mencoba membaca kolom stempel waktu dalam tabel waktu nyata Hudi gagal atau menghasilkan hasil kosong. Batasan ini hanya berlaku untuk kueri yang membaca kolom stempel waktu. Kueri yang hanya menyertakan kolom non-stempel waktu dari tabel yang sama berhasil. 

  Kueri yang gagal mengembalikan pesan yang mirip dengan berikut ini: 

  GENERIC\$1INTERNAL\$1ERROR: kelas org.apache.hadoop.io. ArrayWritabletidak dapat dilemparkan ke kelas org.apache.hadoop.hive.serde2.io. TimestampWritableV2 (org.apache.hadoop.io. ArrayWritable dan org.apache.hadoop.hive.serde2.io. TimestampWritableV2 berada dalam modul loader io.trino.server yang tidak disebutkan namanya. PluginClassLoader @75c67992)
+ **Izin Lake Formation pada 0.15.0 Konektor Hudi** — Batasan ini hanya berlaku ketika Anda memilih untuk menggunakan konektor Hudi asli (versi 0.15.0) dengan menyetel properti tabel ke. `athena_enable_native_hudi_connector_implementation` `true` Secara default, Athena menggunakan konektor Hudi versi 0.14.0, yang tidak memerlukan izin tambahan ini. Untuk menanyakan tabel yang dilindungi Lake Formation, Anda harus memberikan izin Lake Formation ke lokasi data tabel dan direktori `.hoodie` metadata. Misalnya, jika tabel Hudi Anda berada di`s3://bucket/hudi-table/`, Anda harus mendaftar dan memberikan izin untuk keduanya `s3://bucket/hudi-table/` dan `s3://bucket/hudi-table/.hoodie/` di Lake Formation. `.hoodie`Direktori berisi file metadata (seperti`hoodie.properties`) yang perlu dibaca Athena selama perencanaan kueri. Tanpa izin ke `.hoodie` direktori, kueri akan gagal dengan kesalahan izin ditolak.

# Copy on write (CoW) buat contoh tabel
<a name="querying-hudi-copy-on-write-create-table-examples"></a>

Jika Anda memiliki tabel Hudi yang sudah dibuat AWS Glue, Anda dapat menanyakannya langsung di Athena. Saat Anda membuat tabel Hudi yang dipartisi di Athena, Anda harus menjalankan `ALTER TABLE ADD PARTITION` untuk memuat data Hudi sebelum Anda dapat menanyakannya.

## Tabel CoW yang tidak dipartisi
<a name="querying-hudi-nonpartitioned-cow-table"></a>

Contoh berikut membuat tabel CoW tidak dipartisi di Athena.

```
CREATE EXTERNAL TABLE `non_partition_cow`(
  `_hoodie_commit_time` string,
  `_hoodie_commit_seqno` string,
  `_hoodie_record_key` string,
  `_hoodie_partition_path` string,
  `_hoodie_file_name` string,
  `event_id` string,
  `event_time` string,
  `event_name` string,
  `event_guests` int,
  `event_type` string)
ROW FORMAT SERDE
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
  'org.apache.hudi.hadoop.HoodieParquetInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
  's3://amzn-s3-demo-bucket/folder/non_partition_cow/'
```

## Tabel CoW yang dipartisi
<a name="querying-hudi-partitioned-cow-table"></a>

Contoh berikut membuat tabel CoW dipartisi di Athena.

```
CREATE EXTERNAL TABLE `partition_cow`(
  `_hoodie_commit_time` string, 
  `_hoodie_commit_seqno` string, 
  `_hoodie_record_key` string, 
  `_hoodie_partition_path` string, 
  `_hoodie_file_name` string, 
  `event_id` string, 
  `event_time` string, 
  `event_name` string, 
  `event_guests` int)
PARTITIONED BY ( 
  `event_type` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hudi.hadoop.HoodieParquetInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat' 
LOCATION
  's3://amzn-s3-demo-bucket/folder/partition_cow/'
```

Contoh `ALTER TABLE ADD PARTITION` berikut menambahkan dua partisi ke contoh tabel `partition_cow`.

```
ALTER TABLE partition_cow ADD
  PARTITION (event_type = 'one') LOCATION 's3://amzn-s3-demo-bucket/folder/partition_cow/one/' 
  PARTITION (event_type = 'two') LOCATION 's3://amzn-s3-demo-bucket/folder/partition_cow/two/'
```

# Gabungkan pada read (MoR) buat contoh tabel
<a name="querying-hudi-merge-on-read-create-table-examples"></a>

Hudi membuat dua tabel di metastore untuk MoR: tabel untuk mengkueri snapshot, dan tabel untuk mengkueri dioptimalkan baca. Kedua tabel dapat dikueri. Dalam versi Hudi sebelum 0.5.1, tabel untuk mengkueri dioptimalkan baca memilini nama yang Anda tentukan saat Anda membuat tabel. Mulai versi Hudi 0.5.1, nama tabel diakhiri dengan `_ro` secara default. Nama tabel untuk mengkueri snapshot adalah nama yang Anda tentukan ditambah `_rt`.

## Penggabungan yang tidak dipartisi pada tabel baca (MoR)
<a name="querying-hudi-nonpartitioned-merge-on-read-table"></a>

Contoh berikut membuat tabel MoR tidak dipartisi di Athena kueri yang dioptimalkan baca. Perhatikan bahwa dioptimalkan baca menggunakan format input `HoodieParquetInputFormat`.

```
CREATE EXTERNAL TABLE `nonpartition_mor`(
  `_hoodie_commit_time` string, 
  `_hoodie_commit_seqno` string, 
  `_hoodie_record_key` string, 
  `_hoodie_partition_path` string, 
  `_hoodie_file_name` string, 
  `event_id` string, 
  `event_time` string, 
  `event_name` string, 
  `event_guests` int, 
  `event_type` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hudi.hadoop.HoodieParquetInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat' 
LOCATION
  's3://amzn-s3-demo-bucket/folder/nonpartition_mor/'
```

Contoh berikut membuat tabel MoR tidak dipartisi di Athena untuk mengkueri snapshot. Untuk kueri snapshot, gunakan format input `HoodieParquetRealtimeInputFormat`.

```
CREATE EXTERNAL TABLE `nonpartition_mor_rt`(
  `_hoodie_commit_time` string, 
  `_hoodie_commit_seqno` string, 
  `_hoodie_record_key` string, 
  `_hoodie_partition_path` string, 
  `_hoodie_file_name` string, 
  `event_id` string, 
  `event_time` string, 
  `event_name` string, 
  `event_guests` int, 
  `event_type` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hudi.hadoop.realtime.HoodieParquetRealtimeInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat' 
LOCATION
  's3://amzn-s3-demo-bucket/folder/nonpartition_mor/'
```

## Penggabungan yang dipartisi pada tabel baca (MoR)
<a name="querying-hudi-partitioned-merge-on-read-table"></a>

Contoh berikut membuat tabel MoR dipartisi di Athena untuk mengkueri dioptimalkan baca.

```
CREATE EXTERNAL TABLE `partition_mor`(
  `_hoodie_commit_time` string, 
  `_hoodie_commit_seqno` string, 
  `_hoodie_record_key` string, 
  `_hoodie_partition_path` string, 
  `_hoodie_file_name` string, 
  `event_id` string, 
  `event_time` string, 
  `event_name` string, 
  `event_guests` int)
PARTITIONED BY ( 
  `event_type` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hudi.hadoop.HoodieParquetInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
  's3://amzn-s3-demo-bucket/folder/partition_mor/'
```

Contoh `ALTER TABLE ADD PARTITION` berikut menambahkan dua partisi ke contoh tabel `partition_mor`.

```
ALTER TABLE partition_mor ADD
  PARTITION (event_type = 'one') LOCATION 's3://amzn-s3-demo-bucket/folder/partition_mor/one/'
  PARTITION (event_type = 'two') LOCATION 's3://amzn-s3-demo-bucket/folder/partition_mor/two/'
```

Contoh berikut membuat tabel MoR dipartisi di Athena untuk mengkueri snapshot.

```
CREATE EXTERNAL TABLE `partition_mor_rt`(
  `_hoodie_commit_time` string, 
  `_hoodie_commit_seqno` string, 
  `_hoodie_record_key` string, 
  `_hoodie_partition_path` string, 
  `_hoodie_file_name` string, 
  `event_id` string, 
  `event_time` string, 
  `event_name` string, 
  `event_guests` int)
PARTITIONED BY ( 
  `event_type` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT 
  'org.apache.hudi.hadoop.realtime.HoodieParquetRealtimeInputFormat'
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
  's3://amzn-s3-demo-bucket/folder/partition_mor/'
```

Demikian pula, contoh berikut `ALTER TABLE ADD PARTITION` menambahkan dua partisi ke tabel `partition_mor_rt` contoh.

```
ALTER TABLE partition_mor_rt ADD
  PARTITION (event_type = 'one') LOCATION 's3://amzn-s3-demo-bucket/folder/partition_mor/one/'
  PARTITION (event_type = 'two') LOCATION 's3://amzn-s3-demo-bucket/folder/partition_mor/two/'
```

# Gunakan metadata Hudi untuk meningkatkan kinerja
<a name="querying-hudi-metadata-table"></a>

Apache Hudi memiliki [tabel metadata](https://hudi.apache.org/docs/next/metadata/) yang berisi fitur pengindeksan untuk meningkatkan kinerja seperti daftar file, melewatkan data menggunakan statistik kolom, dan indeks berbasis filter mekar.

Dari fitur-fitur ini, Athena saat ini hanya mendukung indeks daftar file. Indeks daftar file menghilangkan panggilan sistem file seperti “daftar file” dengan mengambil informasi dari indeks yang memelihara partisi ke pemetaan file. Ini menghilangkan kebutuhan untuk daftar secara rekursif setiap partisi di bawah jalur tabel untuk mendapatkan tampilan sistem file. Saat Anda bekerja dengan kumpulan data besar, pengindeksan ini secara drastis mengurangi latensi yang seharusnya terjadi saat mendapatkan daftar file selama penulisan dan kueri. Ini juga menghindari kemacetan seperti pembatasan batas permintaan pada panggilan Amazon S3. `LIST`

**catatan**  
Athena tidak mendukung lompatan data atau pengindeksan filter mekar saat ini.

## Mengaktifkan tabel metadata Hudi
<a name="querying-hudi-metadata-table-enabling-the-hudi-metadata-table"></a>

Daftar file berbasis tabel metadata dinonaktifkan secara default. Untuk mengaktifkan tabel metadata Hudi dan fungsionalitas daftar file terkait, atur properti `hudi.metadata-listing-enabled` tabel ke. `TRUE`

**Contoh**  
`ALTER TABLE SET TBLPROPERTIES`Contoh berikut memungkinkan tabel metadata pada tabel contoh`partition_cow`.

```
ALTER TABLE partition_cow SET TBLPROPERTIES('hudi.metadata-listing-enabled'='TRUE')
```

## Gunakan metadata yang dihasilkan bootstrap
<a name="querying-hudi-hudi-dataset-table-types-bootstrap"></a>

Mulai di Apache Hudi versi 0.6.0, fitur operasi bootstrap memberikan performa yang lebih baik dengan set data Parquet yang ada. Sebagai ganti menulis ulang set data, operasi bootstrap dapat menghasilkan metadata saja, meninggalkan set data di tempat. 

Anda dapat menggunakan Athena untuk mengkueri tabel dari operasi bootstrap seperti tabel lain berdasarkan data di Amazon S3. Di pernyataan `CREATE TABLE`, tentukan jalur tabel Hudi Anda di klausa `LOCATION`. 

Untuk informasi lebih lanjut tentang membuat tabel Hudi menggunakan operasi bootstrap di Amazon EMR, lihat [artikel Fitur baru dari Apache Hudi tersedia di Amazon AWS EMR di](https://aws.amazon.com/blogs/big-data/new-features-from-apache-hudi-available-in-amazon-emr/) Big Data Blog.

# Sumber daya tambahan
<a name="querying-hudi-additional-resources"></a>

Untuk sumber daya tambahan tentang penggunaan Apache Hudi dengan Athena, lihat sumber daya berikut.

## Video
<a name="querying-hudi-videos"></a>

Video berikut menunjukkan bagaimana Anda dapat menggunakan Amazon Athena untuk mengkueri set data Apache dioptimalkan baca dalam danau data berbasis Amazon S3 Anda.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/TVcreqxBaGA/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/TVcreqxBaGA)


## Unggahan blog
<a name="querying-hudi-big-data-blogs"></a>

Posting Blog AWS Big Data berikut mencakup deskripsi tentang bagaimana Anda dapat menggunakan Apache Hudi dengan Athena.
+ [Gunakan AWS Data Exchange untuk membagikan kumpulan data Apache Hudi dengan mulus](https://aws.amazon.com/blogs/big-data/use-aws-data-exchange-to-seamlessly-share-apache-hudi-datasets/) 
+ [Membuat data lake near-real-time transaksional berbasis Apache Hudi menggunakan, Amazon AWS DMS Kinesis, AWS Glue streaming ETL, dan visualisasi data menggunakan Quick](https://aws.amazon.com/blogs/big-data/create-an-apache-hudi-based-near-real-time-transactional-data-lake-using-aws-dms-amazon-kinesis-aws-glue-streaming-etl-and-data-visualization-using-amazon-quicksight/) 
+ Untuk informasi tentang penggunaan konektor AWS Glue kustom dan AWS Glue 2.0 pekerjaan untuk membuat tabel Apache Hudi yang dapat Anda kueri dengan Athena, lihat [Menulis ke tabel Apache Hudi](https://aws.amazon.com/blogs/big-data/writing-to-apache-hudi-tables-using-aws-glue-connector/) menggunakan konektor kustom. AWS Glue 
+ Untuk artikel tentang menggunakan Apache Hudi, AWS Glue, dan Amazon Athena untuk membangun kerangka pemrosesan data untuk data lake, [lihat Menyederhanakan pemrosesan data operasional di danau data menggunakan dan Apache Hudi](https://aws.amazon.com/blogs/big-data/simplify-operational-data-processing-in-data-lakes-using-aws-glue-and-apache-hudi/). AWS Glue 

# Tabel Query Apache Iceberg
<a name="querying-iceberg"></a>

Anda dapat menggunakan Athena untuk melakukan membaca, perjalanan waktu, menulis, dan kueri DDL pada tabel Apache Iceberg.

[Apache Iceberg](https://iceberg.apache.org/) adalah format tabel terbuka untuk dataset analitik yang sangat besar. Iceberg mengelola koleksi besar file sebagai tabel, dan mendukung operasi danau data analitik modern seperti penyisipan tingkat catatan, pembaruan, penghapusan, dan kueri perjalanan waktu. Spesifikasi Iceberg memungkinkan evolusi tabel yang mulus seperti skema dan evolusi partisi dan dirancang untuk penggunaan yang dioptimalkan di Amazon S3. Iceberg juga membantu menjamin kebenaran data di bawah skenario penulisan bersamaan.

[Untuk informasi lebih lanjut tentang Apache Iceberg, lihat https://iceberg.apache.org/.](https://iceberg.apache.org/)

## Pertimbangan dan batasan
<a name="querying-iceberg-considerations-and-limitations"></a>

Dukungan Athena untuk tabel Iceberg memiliki pertimbangan dan batasan berikut:
+ **Dukungan versi Iceberg - Athena mendukung** Apache Iceberg versi 1.4.2. 
+ **Tabel terdaftar di Lake Formation** — Athena saat ini tidak mendukung operasi DDL pada tabel Gunung Es yang terdaftar di Lake Formation. 
+ **Kueri terhadap skema informasi — Saat menanyakan skema** informasi tabel Iceberg, Athena menggunakan metadata S3 sebagai sumber kebenaran untuk metadata kolom. Ini berarti bahwa informasi kolom berasal dari file S3 yang mendasarinya, bukan dari metadata katalog. Perilaku ini berbeda dari format tabel lain di mana metadata katalog mungkin menjadi sumber utama untuk informasi kolom.
+ **Tabel dengan AWS Glue katalog saja** — Hanya tabel Iceberg yang dibuat berdasarkan AWS Glue katalog berdasarkan spesifikasi yang ditentukan oleh [implementasi katalog lem open source](https://iceberg.apache.org/docs/latest/aws/#glue-catalog) yang didukung dari Athena.
+ **Dukungan penguncian meja AWS Glue hanya dengan** - Tidak seperti implementasi katalog Glue open source, yang mendukung penguncian khusus plug-in, Athena hanya AWS Glue mendukung penguncian optimis. Menggunakan Athena untuk memodifikasi tabel Iceberg dengan implementasi kunci lainnya akan menyebabkan potensi kehilangan data dan merusak transaksi.
+ **Format file yang didukung** - Athena engine versi 3 mendukung format file Iceberg berikut.
  + Parquet
  + ORC
  + Avro
+ **Metadata terbatas gunung es — Lake Formation tidak mengevaluasi tabel metadata** Gunung Es. Oleh karena itu, tabel metadata Gunung Es dibatasi jika ada baris Lake Formation atau filter sel yang ada di tabel dasar atau jika Anda tidak memiliki izin untuk melihat semua kolom di tabel dasar. Untuk kasus seperti itu, ketika Anda menanyakan tabel metadata `$partitions` `$files``$manifests`,,, dan `$snapshots` Iceberg, itu gagal dan Anda mendapatkan kesalahan. `AccessDeniedException` Selain itu, kolom metadata `$path` memiliki batasan Lake Formation yang sama dan gagal saat dipilih oleh kueri. Semua tabel metadata lainnya dapat ditanyakan terlepas dari filter Lake Formation. Untuk informasi selengkapnya, lihat [Tabel metadata](https://trino.io/docs/current/connector/iceberg.html#metadata-tables).
+ Tabel **Iceberg v2 — Athena hanya membuat dan beroperasi pada tabel** Iceberg v2. Untuk perbedaan antara tabel v1 dan v2, lihat [Format perubahan versi dalam dokumentasi](https://iceberg.apache.org/spec/#appendix-e-format-version-changes) Apache Iceberg.
+ **Tampilan jenis waktu tanpa zona waktu** - Waktu dan stempel waktu tanpa jenis zona waktu ditampilkan di UTC. Jika zona waktu tidak ditentukan dalam ekspresi filter pada kolom waktu, UTC digunakan.
+ **Presisi data terkait stempel waktu — Meskipun Iceberg mendukung presisi** mikrodetik untuk tipe data stempel waktu, Athena hanya mendukung presisi milidetik untuk stempel waktu dalam membaca dan menulis. Untuk data dalam kolom terkait waktu yang ditulis ulang selama operasi pemadatan manual, Athena hanya mempertahankan presisi milidetik.
+ Operasi **yang tidak didukung - Operasi** Athena berikut tidak didukung untuk tabel Iceberg. 
  + [ALTER TABLE SET LOCATION](alter-table-set-location.md)
+ **Tampilan** — Gunakan `CREATE VIEW` untuk membuat tampilan Athena seperti yang dijelaskan dalam. [Bekerja dengan pandangan](views.md) [Jika Anda tertarik menggunakan [spesifikasi tampilan Gunung Es untuk membuat tampilan](https://github.com/apache/iceberg/blob/master/format/view-spec.md), hubungi athena-feedback@amazon.com.](mailto:athena-feedback@amazon.com) 
+ **Perintah manajemen TTF tidak didukung di AWS Lake Formation** - Meskipun Anda dapat menggunakan Lake Formation untuk mengelola izin akses baca untuk TransactionTable Format (TTFs) seperti Apache Iceberg, Apache Hudi, dan Linux Foundation Delta Lake, Anda tidak dapat menggunakan Lake Formation untuk mengelola izin untuk operasi seperti,, atau dengan format tabel ini. `VACUUM` `MERGE` `UPDATE` `OPTIMIZE` *Untuk informasi selengkapnya tentang integrasi Lake Formation dengan Athena, lihat [Menggunakan AWS Lake Formation dengan Amazon Athena](https://docs.aws.amazon.com/lake-formation/latest/dg/athena-lf.html) di AWS Lake Formation Panduan Pengembang.*
+ **Partisi dengan bidang bersarang - Partisi dengan bidang** bersarang tidak didukung. Mencoba melakukannya menghasilkan pesan NOT\$1SUPPORTED: Partisi dengan bidang bersarang tidak didukung:. *column\$1name* *nested\$1field\$1name*.
+ **Melewatkan objek Amazon Glacier tidak didukung - Jika objek** di tabel Apache Iceberg berada dalam kelas penyimpanan Amazon Glacier, setel properti tabel tidak berpengaruh. `read_restored_glacier_objects` `false`

  Misalnya, Anda mengeluarkan perintah berikut:

  ```
  ALTER TABLE table_name SET TBLPROPERTIES ('read_restored_glacier_objects' = 'false')
  ```

  Untuk tabel Iceberg dan Delta Lake, perintah menghasilkan kesalahan Kunci properti tabel Tidak didukung: read\$1restored\$1glacier\$1objects. Untuk tabel Hudi, `ALTER TABLE` perintah tidak menghasilkan kesalahan, tetapi objek Amazon Glacier masih belum dilewati. Menjalankan `SELECT` kueri setelah `ALTER TABLE` perintah terus mengembalikan semua objek.

[Jika Anda ingin Athena mendukung fitur tertentu, kirim umpan balik ke athena-feedback@amazon.com.](mailto:athena-feedback@amazon.com)

**Topics**
+ [Pertimbangan dan batasan](#querying-iceberg-considerations-and-limitations)
+ [Buat tabel Iceberg](querying-iceberg-creating-tables.md)
+ [Kueri data tabel Iceberg](querying-iceberg-table-data.md)
+ [Lakukan perjalanan waktu dan kueri perjalanan versi](querying-iceberg-time-travel-and-version-travel-queries.md)
+ [Perbarui data tabel Gunung Es](querying-iceberg-updating-iceberg-table-data.md)
+ [Mengelola tabel Iceberg](querying-iceberg-managing-tables.md)
+ [Skema tabel Evolve Iceberg](querying-iceberg-evolving-table-schema.md)
+ [Lakukan operasi DDL lainnya pada tabel Iceberg](querying-iceberg-additional-operations.md)
+ [Optimalkan tabel Iceberg](querying-iceberg-data-optimization.md)
+ [Tampilan terwujud Katalog AWS Glue Data Kueri](querying-iceberg-gdc-mv.md)
+ [Tipe data yang didukung untuk tabel Iceberg di Athena](querying-iceberg-supported-data-types.md)
+ [Sumber daya tambahan](querying-iceberg-additional-resources.md)

# Buat tabel Iceberg
<a name="querying-iceberg-creating-tables"></a>

Untuk membuat tabel Iceberg untuk digunakan di Athena, Anda dapat menggunakan `CREATE TABLE` pernyataan seperti yang didokumentasikan pada halaman ini, atau Anda dapat menggunakan crawler. AWS Glue 

## Menggunakan pernyataan CREATE TABLE
<a name="querying-iceberg-creating-tables-query-editor"></a>

Athena membuat tabel Iceberg v2. Untuk perbedaan antara tabel v1 dan v2, lihat [Format perubahan versi dalam dokumentasi](https://iceberg.apache.org/spec/#appendix-e-format-version-changes) Apache Iceberg.

Athena `CREATE TABLE` membuat tabel Gunung Es tanpa data. Anda dapat menanyakan tabel dari sistem eksternal seperti Apache Spark secara langsung jika tabel menggunakan katalog lem sumber [terbuka Iceberg](https://iceberg.apache.org/docs/latest/aws/#glue-catalog). Anda tidak perlu membuat tabel eksternal.

**Awas**  
Menjalankan `CREATE EXTERNAL TABLE` menghasilkan pesan kesalahan Kata kunci eksternal tidak didukung untuk jenis tabel ICEBERG. 

Untuk membuat tabel Iceberg dari Athena, atur properti `'table_type'` table ke `'ICEBERG'` dalam `TBLPROPERTIES` klausa, seperti pada ringkasan sintaks berikut.

```
CREATE TABLE
  [db_name.]table_name (col_name data_type [COMMENT col_comment] [, ...] )
  [PARTITIONED BY (col_name | transform, ... )]
  LOCATION 's3://amzn-s3-demo-bucket/your-folder/'
  TBLPROPERTIES ( 'table_type' ='ICEBERG' [, property_name=property_value] )
```

Untuk informasi tentang tipe data yang dapat Anda kueri dalam tabel Iceberg, lihat. [Tipe data yang didukung untuk tabel Iceberg di Athena](querying-iceberg-supported-data-types.md)

### Gunakan partisi
<a name="querying-iceberg-partitioning"></a>

Untuk membuat tabel Iceberg dengan partisi, gunakan sintaks. `PARTITIONED BY` Kolom yang digunakan untuk partisi harus ditentukan dalam deklarasi kolom terlebih dahulu. Dalam `PARTITIONED BY` klausa, jenis kolom tidak boleh disertakan. Anda juga dapat mendefinisikan [transformasi partisi](https://iceberg.apache.org/spec/#partition-transforms) dalam `CREATE TABLE` sintaks. Untuk menentukan beberapa kolom untuk partisi, pisahkan kolom dengan karakter koma (`,`), seperti pada contoh berikut.

```
CREATE TABLE iceberg_table (id bigint, data string, category string)
  PARTITIONED BY (category, bucket(16, id))
  LOCATION 's3://amzn-s3-demo-bucket/your-folder/'
  TBLPROPERTIES ( 'table_type' = 'ICEBERG' )
```

Tabel berikut menunjukkan fungsi transformasi partisi yang tersedia.


****  

| Fungsi | Deskripsi | Jenis yang didukung | 
| --- | --- | --- | 
| year(ts) | Partisi menurut tahun | date, timestamp | 
| month(ts) | Partisi berdasarkan bulan | date, timestamp | 
| day(ts)  | Partisi berdasarkan hari | date, timestamp | 
| hour(ts) | Partisi per jam | timestamp | 
| bucket(N, col) | Partisi dengan N bucket mod nilai hash. Ini adalah konsep yang sama dengan hash bucketing untuk tabel Hive. | int, long, decimal, date, timestamp, string, binary  | 
| truncate(L, col) | Partisi dengan nilai terpotong L | int, long, decimal, string | 

Athena mendukung partisi tersembunyi Iceberg. Untuk informasi selengkapnya, lihat [partisi tersembunyi Iceberg dalam dokumentasi Apache Iceberg](https://iceberg.apache.org/docs/latest/partitioning/#icebergs-hidden-partitioning).

### Tentukan properti tabel
<a name="querying-iceberg-table-properties"></a>

Bagian ini menjelaskan properti tabel yang dapat Anda tentukan sebagai pasangan kunci-nilai dalam `TBLPROPERTIES` klausa pernyataan. `CREATE TABLE` Athena hanya mengizinkan daftar pasangan kunci-nilai yang telah ditentukan dalam properti tabel untuk membuat atau mengubah tabel Iceberg. Tabel berikut menunjukkan properti tabel yang dapat Anda tentukan. Untuk informasi selengkapnya tentang opsi pemadatan, lihat [Optimalkan tabel Iceberg](querying-iceberg-data-optimization.md) di dokumentasi ini. [Jika Anda ingin Athena mendukung properti konfigurasi tabel open source tertentu, kirim umpan balik ke athena-feedback@amazon.com.](mailto:athena-feedback@amazon.com) 

***format***


****  

|  |  | 
| --- |--- |
| Deskripsi | Format data file | 
| Nilai properti yang diizinkan | Format file yang didukung dan kombinasi kompresi bervariasi menurut versi mesin Athena. Untuk informasi selengkapnya, lihat [Gunakan kompresi tabel Iceberg](compression-support-iceberg.md). | 
| Nilai default | parquet | 

***write\$1compression***


****  

|  |  | 
| --- |--- |
| Deskripsi | Codec kompresi file | 
| Nilai properti yang diizinkan | Format file yang didukung dan kombinasi kompresi bervariasi menurut versi mesin Athena. Untuk informasi selengkapnya, lihat [Gunakan kompresi tabel Iceberg](compression-support-iceberg.md). | 
| Nilai default |  Kompresi tulis default bervariasi menurut versi mesin Athena. Untuk informasi selengkapnya, lihat [Gunakan kompresi tabel Iceberg](compression-support-iceberg.md).  | 

***optimize\$1rewrite\$1data\$1file\$1threshold***


****  

|  |  | 
| --- |--- |
| Deskripsi | Konfigurasi spesifik pengoptimalan data. Jika ada lebih sedikit file data yang memerlukan optimasi daripada ambang batas yang diberikan, file tidak ditulis ulang. Hal ini memungkinkan akumulasi lebih banyak file data untuk menghasilkan file yang lebih dekat dengan ukuran target dan melewatkan perhitungan yang tidak perlu untuk menghemat biaya. | 
| Nilai properti yang diizinkan | Bilangan positif Harus kurang dari 50. | 
| Nilai default | 5 | 

***optimize\$1rewrite\$1delete\$1file\$1threshold***


****  

|  |  | 
| --- |--- |
| Deskripsi | Konfigurasi spesifik pengoptimalan data. Jika ada lebih sedikit file hapus yang terkait dengan file data daripada ambang batas, file data tidak ditulis ulang. Ini memungkinkan akumulasi lebih banyak file hapus untuk setiap file data untuk menghemat biaya. | 
| Nilai properti yang diizinkan | Bilangan positif Harus kurang dari 50. | 
| Nilai default | 2 | 

***vacuum\$1min\$1snapshots\$1to\$1keep***


****  

|  |  | 
| --- |--- |
| Deskripsi |  Jumlah minimum snapshot untuk disimpan di cabang utama tabel. Nilai ini lebih diutamakan daripada properti. `vacuum_max_snapshot_age_seconds` Jika snapshot minimum yang tersisa lebih tua dari usia yang ditentukan oleh`vacuum_max_snapshot_age_seconds`, snapshot disimpan, dan nilai diabaikan`vacuum_max_snapshot_age_seconds`.  | 
| Nilai properti yang diizinkan | Bilangan positif | 
| Nilai default | 1 | 

***vacuum\$1max\$1snapshot\$1age\$1seconds***


****  

|  |  | 
| --- |--- |
| Deskripsi | Usia maksimum snapshot untuk dipertahankan di cabang utama. Nilai ini diabaikan jika sisa minimum snapshot yang ditentukan oleh vacuum\$1min\$1snapshots\$1to\$1keep lebih tua dari usia yang ditentukan. Properti perilaku tabel ini sesuai dengan history.expire.max-snapshot-age-ms properti dalam konfigurasi Apache Iceberg. | 
| Nilai properti yang diizinkan | Bilangan positif | 
| Nilai default | 432000 detik (5 hari) | 

***vacuum\$1max\$1metadata\$1files\$1to\$1keep***


****  

|  |  | 
| --- |--- |
| Deskripsi | Jumlah maksimum file metadata sebelumnya untuk disimpan di cabang utama tabel. | 
| Nilai properti yang diizinkan | Bilangan positif | 
| Nilai default | 100 | 

***write\$1data\$1path\$1enabled***


****  

|  |  | 
| --- |--- |
| Deskripsi | Ketika diatur ketrue, tabel Iceberg dibuat dengan write.data.path properti bukan properti usang. write.object-storage.path Gunakan opsi ini untuk memastikan kompatibilitas dengan Iceberg 1.9.0 dan yang lebih baru, yang tidak lagi mendukung properti usang. | 
| Nilai properti yang diizinkan | true, false | 
| Nilai default | false | 

### Contoh pernyataan CREATE TABLE
<a name="querying-iceberg-example-create-table-statement"></a>

Contoh berikut membuat tabel Iceberg yang memiliki tiga kolom.

```
CREATE TABLE iceberg_table (
  id int,
  data string,
  category string) 
PARTITIONED BY (category, bucket(16,id)) 
LOCATION 's3://amzn-s3-demo-bucket/iceberg-folder' 
TBLPROPERTIES (
  'table_type'='ICEBERG',
  'format'='parquet',
  'write_compression'='snappy',
  'optimize_rewrite_delete_file_threshold'='10'
)
```

## Gunakan CREATE TABLE AS SELECT (CTAS)
<a name="querying-iceberg-creating-tables-ctas"></a>

Untuk informasi tentang membuat tabel Gunung Es menggunakan `CREATE TABLE AS` pernyataan, lihat[CREATE TABLE AS](create-table-as.md), dengan perhatian khusus pada bagian tersebut[Properti tabel CTAS](create-table-as.md#ctas-table-properties).

## Gunakan AWS Glue crawler
<a name="querying-iceberg-creating-tables-crawler"></a>

Anda dapat menggunakan AWS Glue crawler untuk secara otomatis mendaftarkan tabel Iceberg Anda ke dalam. AWS Glue Data Catalog Jika Anda ingin bermigrasi dari katalog Iceberg lain, Anda dapat membuat dan menjadwalkan AWS Glue crawler dan menyediakan jalur Amazon S3 tempat tabel Iceberg berada. Anda dapat menentukan kedalaman maksimum jalur Amazon S3 yang dapat dilalui AWS Glue crawler. Setelah Anda menjadwalkan AWS Glue crawler, crawler mengekstrak informasi skema dan memperbarui AWS Glue Data Catalog dengan perubahan skema setiap kali dijalankan. AWS Glue Crawler mendukung penggabungan skema di seluruh snapshot dan memperbarui lokasi file metadata terbaru di file. AWS Glue Data Catalog Untuk informasi selengkapnya, lihat [Katalog Data dan crawler di AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html). 

# Kueri data tabel Iceberg
<a name="querying-iceberg-table-data"></a>

Untuk menanyakan dataset Iceberg, gunakan `SELECT` pernyataan standar seperti berikut ini. Kueri mengikuti spesifikasi Apache Iceberg [format v2 dan melakukan penghapusan posisi](https://iceberg.apache.org/spec/#format-versioning) dan merge-on-read kesetaraan.

```
SELECT * FROM [db_name.]table_name [WHERE predicate]
```

Untuk mengoptimalkan waktu kueri, semua predikat didorong ke bawah ke tempat data berada.

Untuk informasi tentang perjalanan waktu dan kueri perjalanan versi, lihat[Lakukan perjalanan waktu dan kueri perjalanan versi](querying-iceberg-time-travel-and-version-travel-queries.md).

## Buat dan kueri tampilan dengan tabel Iceberg
<a name="querying-iceberg-views"></a>

Untuk membuat dan menanyakan tampilan Athena pada tabel Iceberg, gunakan `CREATE VIEW` tampilan seperti yang dijelaskan dalam. [Bekerja dengan pandangan](views.md)

Contoh:

```
CREATE VIEW view1 AS SELECT * FROM iceberg_table
```

```
SELECT * FROM view1 
```

[Jika Anda tertarik menggunakan [spesifikasi tampilan Gunung Es untuk membuat tampilan](https://github.com/apache/iceberg/blob/master/format/view-spec.md), hubungi athena-feedback@amazon.com.](mailto:athena-feedback@amazon.com) 

## Metadata tabel Query Iceberg
<a name="querying-iceberg-table-metadata"></a>

Dalam `SELECT` kueri, Anda dapat menggunakan properti berikut setelahnya *table\$1name* untuk menanyakan metadata tabel Iceberg:
+ **\$1files** - Menampilkan file data tabel saat ini.
+ **\$1manifests** - Menunjukkan manifes file tabel saat ini.
+ **\$1history** — Menampilkan riwayat tabel.
+ **\$1 partisi** - Menunjukkan partisi tabel saat ini.
+ **\$1 snapshots** - Menampilkan snapshot tabel.
+ **\$1refs** — Menunjukkan referensi tabel.

### Contoh
<a name="querying-iceberg-table-metadata-syntax"></a>

Pernyataan berikut mencantumkan file untuk tabel Iceberg.

```
SELECT * FROM "dbname"."tablename$files"
```

Pernyataan berikut mencantumkan manifes untuk tabel Iceberg.

```
SELECT * FROM "dbname"."tablename$manifests" 
```

Pernyataan berikut menunjukkan sejarah untuk tabel Gunung Es.

```
SELECT * FROM "dbname"."tablename$history"
```

Contoh berikut menunjukkan partisi untuk tabel Iceberg.

```
SELECT * FROM "dbname"."tablename$partitions" 
```

Contoh berikut mencantumkan snapshot untuk tabel Iceberg.

```
SELECT * FROM "dbname"."tablename$snapshots" 
```

Contoh berikut menunjukkan referensi untuk tabel Iceberg.

```
SELECT * FROM "dbname"."tablename$refs" 
```

## Gunakan kontrol akses berbutir halus Lake Formation
<a name="querying-iceberg-working-with-lf-fgac"></a>

Mesin Athena versi 3 mendukung kontrol akses berbutir halus Lake Formation dengan tabel Gunung Es, termasuk tingkat kolom dan kontrol akses keamanan tingkat baris. Kontrol akses ini berfungsi dengan kueri perjalanan waktu dan dengan tabel yang telah melakukan evolusi skema. Untuk informasi selengkapnya, lihat [Kontrol akses halus Formasi Danau dan kelompok kerja Athena](lf-athena-limitations.md#lf-athena-limitations-fine-grained-access-control).

Jika Anda membuat tabel Gunung Es di luar Athena, gunakan [Apache Iceberg SDK](https://iceberg.apache.org/releases/) versi 0.13.0 atau lebih tinggi sehingga informasi kolom tabel Iceberg Anda terisi dalam. AWS Glue Data Catalog Jika tabel Iceberg Anda tidak berisi informasi kolom AWS Glue, Anda dapat menggunakan [MENGUBAH TABEL SET TBLPROPERTIES](querying-iceberg-alter-table-set-properties.md) pernyataan Athena atau Iceberg SDK terbaru untuk memperbaiki tabel dan memperbarui informasi kolom di. AWS Glue

# Lakukan perjalanan waktu dan kueri perjalanan versi
<a name="querying-iceberg-time-travel-and-version-travel-queries"></a>

Setiap tabel Apache Iceberg mempertahankan manifes berversi dari objek Amazon S3 yang dikandungnya. Versi manifes sebelumnya dapat digunakan untuk perjalanan waktu dan kueri perjalanan versi.

Kueri perjalanan waktu di Athena menanyakan Amazon S3 untuk data historis dari snapshot yang konsisten pada tanggal dan waktu yang ditentukan. Kueri perjalanan versi di Athena menanyakan Amazon S3 untuk data historis sebagai ID snapshot yang ditentukan.

## Pertanyaan perjalanan waktu
<a name="querying-iceberg-time-travel-queries"></a>

Untuk menjalankan kueri perjalanan waktu, gunakan `FOR TIMESTAMP AS OF timestamp` setelah nama tabel dalam `SELECT` pernyataan, seperti pada contoh berikut.

```
SELECT * FROM iceberg_table FOR TIMESTAMP AS OF timestamp
```

Waktu sistem yang akan ditentukan untuk bepergian adalah stempel waktu atau stempel waktu dengan zona waktu. Jika tidak ditentukan, Athena menganggap nilainya sebagai stempel waktu dalam waktu UTC.

Contoh kueri perjalanan waktu berikut memilih CloudTrail data untuk tanggal dan waktu yang ditentukan.

```
SELECT * FROM iceberg_table FOR TIMESTAMP AS OF TIMESTAMP '2020-01-01 10:00:00 UTC'
```

```
SELECT * FROM iceberg_table FOR TIMESTAMP AS OF (current_timestamp - interval '1' day)
```

## Pertanyaan perjalanan versi
<a name="querying-iceberg-version-travel-queries"></a>

Untuk menjalankan kueri perjalanan versi (yaitu, melihat snapshot yang konsisten pada versi tertentu), gunakan `FOR VERSION AS OF version` setelah nama tabel dalam `SELECT` pernyataan, seperti pada contoh berikut.

```
SELECT * FROM [db_name.]table_name FOR VERSION AS OF version         
```

*version*Parameternya adalah ID `bigint` snapshot yang terkait dengan versi tabel Iceberg.

Contoh kueri perjalanan versi berikut memilih data untuk versi yang ditentukan.

```
SELECT * FROM iceberg_table FOR VERSION AS OF 949530903748831860
```

**catatan**  
`FOR SYSTEM_VERSION AS OF`Klausul `FOR SYSTEM_TIME AS OF` dan dalam mesin Athena versi 2 telah digantikan oleh `FOR TIMESTAMP AS OF` klausul `FOR VERSION AS OF` dan di Athena engine versi 3.

### Ambil ID snapshot
<a name="querying-iceberg-table-snapshot-id"></a>

Anda dapat menggunakan [SnapshotUtil](https://iceberg.apache.org/javadoc/1.6.0/org/apache/iceberg/util/SnapshotUtil.html)kelas Java yang disediakan oleh Iceberg untuk mengambil ID snapshot Iceberg, seperti pada contoh berikut.

```
import org.apache.iceberg.Table;
import org.apache.iceberg.aws.glue.GlueCatalog;
import org.apache.iceberg.catalog.TableIdentifier;
import org.apache.iceberg.util.SnapshotUtil;

import java.text.SimpleDateFormat;
import java.util.Date;

Catalog catalog = new GlueCatalog();

Map<String, String> properties = new HashMap<String, String>();
properties.put("warehouse", "s3://amzn-s3-demo-bucket/my-folder");
catalog.initialize("my_catalog", properties);

Date date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse("2022/01/01 00:00:00");
long millis = date.getTime();

TableIdentifier name = TableIdentifier.of("db", "table");
Table table = catalog.loadTable(name);
long oldestSnapshotIdAfter2022 = SnapshotUtil.oldestAncestorAfter(table, millis);
```

## Gabungkan perjalanan waktu dan versi
<a name="querying-iceberg-combining-time-and-version-travel"></a>

Anda dapat menggunakan sintaks perjalanan waktu dan perjalanan versi dalam kueri yang sama untuk menentukan kondisi waktu dan versi yang berbeda, seperti pada contoh berikut.

```
SELECT table1.*, table2.* FROM 
  [db_name.]table_name FOR TIMESTAMP AS OF (current_timestamp - interval '1' day) AS table1 
  FULL JOIN 
  [db_name.]table_name FOR VERSION AS OF 5487432386996890161 AS table2 
  ON table1.ts = table2.ts 
  WHERE (table1.id IS NULL OR table2.id IS NULL)
```

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

# Mengelola tabel Iceberg
<a name="querying-iceberg-managing-tables"></a>

Athena mendukung operasi DDL tabel berikut untuk tabel Iceberg.

**Topics**
+ [UBAH NAMA TABEL](querying-iceberg-alter-table-rename.md)
+ [MENGUBAH TABEL SET TBLPROPERTIES](querying-iceberg-alter-table-set-properties.md)
+ [MENGUBAH TABEL UNSET TBLPROPERTIES](querying-iceberg-alter-table-unset-properties.md)
+ [MENJELASKAN](querying-iceberg-describe-table.md)
+ [MEJA DROP](querying-iceberg-drop-table.md)
+ [TAMPILKAN TABEL BUAT](querying-iceberg-show-create-table.md)
+ [TBLPROPERTIES](querying-iceberg-show-table-properties.md)

# UBAH NAMA TABEL
<a name="querying-iceberg-alter-table-rename"></a>

Mengganti nama tabel.

Karena metadata tabel tabel Iceberg disimpan di Amazon S3, Anda dapat memperbarui database dan nama tabel tabel yang dikelola Iceberg tanpa memengaruhi informasi tabel yang mendasarinya.

## Sinopsis
<a name="querying-iceberg-alter-table-rename-synopsis"></a>

```
ALTER TABLE [db_name.]table_name RENAME TO [new_db_name.]new_table_name
```

## Contoh
<a name="querying-iceberg-alter-table-rename-example"></a>

```
ALTER TABLE my_db.my_table RENAME TO my_db2.my_table2
```

# MENGUBAH TABEL SET TBLPROPERTIES
<a name="querying-iceberg-alter-table-set-properties"></a>

Menambahkan properti ke tabel Iceberg dan menetapkan nilai yang ditetapkan.

Sesuai dengan [spesifikasi Iceberg](https://iceberg.apache.org/#spec/#table-metadata-fields), properti tabel disimpan dalam file metadata tabel Iceberg daripada di. AWS Glue Athena tidak menerima properti tabel kustom. Lihat [Tentukan properti tabel](querying-iceberg-creating-tables.md#querying-iceberg-table-properties) bagian untuk pasangan nilai kunci yang diizinkan. Anda juga dapat menggunakan `ALTER TABLE SET TBLPROPERTIES` dan `ALTER TABLE UNSET TBLPROPERTIES` untuk mengatur atau menghapus properti tabel `write.data.path` dan `write.object-storage.path` Iceberg. [Jika Anda ingin Athena mendukung properti konfigurasi tabel open source tertentu, kirim umpan balik ke athena-feedback@amazon.com.](mailto:athena-feedback@amazon.com)

## Sinopsis
<a name="querying-iceberg-alter-table-set-properties-synopsis"></a>

```
ALTER TABLE [db_name.]table_name SET TBLPROPERTIES ('property_name' = 'property_value' [ , ... ])
```

## Contoh
<a name="querying-iceberg-alter-table-set-properties-example"></a>

```
ALTER TABLE iceberg_table SET TBLPROPERTIES (
  'format'='parquet',
  'write_compression'='snappy',
  'optimize_rewrite_delete_file_threshold'='10'
)
```

Contoh berikut menetapkan `write.data.path` properti pada tabel Iceberg yang ada.

```
ALTER TABLE iceberg_table SET TBLPROPERTIES (
  'write.data.path'='s3://amzn-s3-demo-bucket/your-folder/data'
)
```

# MENGUBAH TABEL UNSET TBLPROPERTIES
<a name="querying-iceberg-alter-table-unset-properties"></a>

Menjatuhkan properti yang ada dari tabel Iceberg.

## Sinopsis
<a name="querying-iceberg-alter-table-unset-properties-synopsis"></a>

```
ALTER TABLE [db_name.]table_name UNSET TBLPROPERTIES ('property_name' [ , ... ])
```

## Contoh
<a name="querying-iceberg-alter-table-unset-properties-example"></a>

```
ALTER TABLE iceberg_table UNSET TBLPROPERTIES ('write_compression')
```

Contoh berikut menghapus `write.data.path` properti dari tabel Iceberg.

```
ALTER TABLE iceberg_table UNSET TBLPROPERTIES ('write.data.path')
```

# MENJELASKAN
<a name="querying-iceberg-describe-table"></a>

Menjelaskan informasi tabel.

## Sinopsis
<a name="querying-iceberg-describe-table-synopsis"></a>

```
DESCRIBE [FORMATTED] [db_name.]table_name
```

Ketika `FORMATTED` opsi ditentukan, output menampilkan informasi tambahan seperti lokasi tabel dan properti.

## Contoh
<a name="querying-iceberg-describe-table-example"></a>

```
DESCRIBE iceberg_table
```

# MEJA DROP
<a name="querying-iceberg-drop-table"></a>

Menjatuhkan meja Gunung Es.

**Awas**  
Karena tabel Iceberg dianggap tabel terkelola di Athena, menjatuhkan tabel Iceberg juga menghapus semua data dalam tabel.

## Sinopsis
<a name="querying-iceberg-drop-table-synopsis"></a>

```
DROP TABLE [IF EXISTS] [db_name.]table_name
```

## Contoh
<a name="querying-iceberg-drop-table-example"></a>

```
DROP TABLE iceberg_table
```

# TAMPILKAN TABEL BUAT
<a name="querying-iceberg-show-create-table"></a>

Menampilkan pernyataan `CREATE TABLE` DDL yang dapat digunakan untuk membuat ulang tabel Iceberg di Athena. Jika Athena tidak dapat mereproduksi struktur tabel (misalnya, karena properti tabel kustom ditentukan dalam tabel), kesalahan UNSUPPORTED dilemparkan.

## Sinopsis
<a name="querying-iceberg-show-create-table-synopsis"></a>

```
SHOW CREATE TABLE [db_name.]table_name
```

## Contoh
<a name="querying-iceberg-show-create-table-example"></a>

```
SHOW CREATE TABLE iceberg_table
```

# TBLPROPERTIES
<a name="querying-iceberg-show-table-properties"></a>

Menampilkan satu atau lebih properti tabel dari tabel Iceberg. Hanya properti tabel yang didukung Athena yang ditampilkan.

## Sinopsis
<a name="querying-iceberg-show-table-properties-synopsis"></a>

```
SHOW TBLPROPERTIES [db_name.]table_name [('property_name')]
```

## Contoh
<a name="querying-iceberg-show-table-properties-example"></a>

```
SHOW TBLPROPERTIES iceberg_table
```

# Skema tabel Evolve Iceberg
<a name="querying-iceberg-evolving-table-schema"></a>

Pembaruan skema gunung es adalah perubahan khusus metadata. Tidak ada file data yang diubah saat Anda melakukan pembaruan skema. 

Format Iceberg mendukung perubahan evolusi skema berikut:
+ **Tambahkan** - Menambahkan kolom baru ke tabel atau ke bersarang`struct`.
+ **Drop** - Menghapus kolom yang ada dari tabel atau bersarang`struct`.
+ **Ganti nama** - Mengganti nama kolom atau bidang yang ada di bersarang. `struct`
+ **Menyusun ulang** - Mengubah urutan kolom.
+  **Jenis promosi** - Memperluas jenis kolom, `struct` bidang, `map` kunci, `map` nilai, atau `list` elemen. Saat ini, kasus berikut didukung untuk tabel Iceberg: 
  + bilangan bulat ke bilangan bulat besar
  + mengapung menjadi dua kali lipat
  + meningkatkan presisi tipe desimal

Anda dapat menggunakan pernyataan DDL di bagian ini untuk memodifikasi skema tabel Iceberg.

**Topics**
+ [MENGUBAH TABEL TAMBAHKAN KOLOM](querying-iceberg-alter-table-add-columns.md)
+ [MENGUBAH KOLOM DROP TABEL](querying-iceberg-alter-table-drop-column.md)
+ [MENGUBAH KOLOM PERUBAHAN TABEL](querying-iceberg-alter-table-change-column.md)
+ [TAMPILKAN KOLOM](querying-iceberg-show-columns.md)

# MENGUBAH TABEL TAMBAHKAN KOLOM
<a name="querying-iceberg-alter-table-add-columns"></a>

Menambahkan satu atau lebih kolom ke tabel Iceberg yang ada.

## Sinopsis
<a name="querying-iceberg-alter-table-add-columns-synopsis"></a>

```
ALTER TABLE [db_name.]table_name ADD COLUMNS (col_name data_type [,...])
```

## Contoh
<a name="querying-iceberg-alter-table-add-columns-example"></a>

Contoh berikut menambahkan `comment` kolom tipe `string` ke tabel Iceberg.

```
ALTER TABLE iceberg_table ADD COLUMNS (comment string)
```

Contoh berikut menambahkan `point` kolom tipe `struct` ke tabel Iceberg.

```
ALTER TABLE iceberg_table 
ADD COLUMNS (point struct<x: double, y: double>)
```

Contoh berikut menambahkan `points` kolom yang merupakan array struct ke tabel Iceberg.

```
ALTER TABLE iceberg_table 
ADD COLUMNS (points array<struct<x: double, y: double>>)
```

# MENGUBAH KOLOM DROP TABEL
<a name="querying-iceberg-alter-table-drop-column"></a>

Menjatuhkan kolom dari tabel Iceberg yang ada.

## Sinopsis
<a name="querying-iceberg-alter-table-drop-column-synopsis"></a>

```
ALTER TABLE [db_name.]table_name DROP COLUMN col_name
```

## Contoh
<a name="querying-iceberg-alter-table-drop-column-example"></a>

```
ALTER TABLE iceberg_table DROP COLUMN userid
```

# MENGUBAH KOLOM PERUBAHAN TABEL
<a name="querying-iceberg-alter-table-change-column"></a>

Mengubah nama, jenis, urutan atau komentar kolom dalam tabel Gunung Es.

**catatan**  
`ALTER TABLE REPLACE COLUMNS` tidak didukung. Karena `REPLACE COLUMNS` menghapus semua kolom dan kemudian menambahkan yang baru, itu tidak didukung untuk Iceberg. `CHANGE COLUMN`adalah sintaks yang disukai untuk evolusi skema. 

## Sinopsis
<a name="querying-iceberg-alter-table-change-column-synopsis"></a>

```
ALTER TABLE [db_name.]table_name
  CHANGE [COLUMN] col_old_name col_new_name column_type 
  [COMMENT col_comment] [FIRST|AFTER column_name]
```

## Contoh
<a name="querying-iceberg-alter-table-change-column-example"></a>

```
ALTER TABLE iceberg_table CHANGE comment blog_comment string AFTER id
```

# TAMPILKAN KOLOM
<a name="querying-iceberg-show-columns"></a>

Menampilkan kolom dalam tabel.

## Sinopsis
<a name="querying-iceberg-show-columns-synopsis"></a>

```
SHOW COLUMNS (FROM|IN) [db_name.]table_name
```

## Contoh
<a name="querying-iceberg-alter-table-change-column-example"></a>

```
SHOW COLUMNS FROM iceberg_table
```

# Lakukan operasi DDL lainnya pada tabel Iceberg
<a name="querying-iceberg-additional-operations"></a>

Selain operasi evolusi skema yang dijelaskan dalam[Skema tabel Evolve Iceberg](querying-iceberg-evolving-table-schema.md), Anda juga dapat melakukan operasi DDL berikut pada tabel Apache Iceberg di Athena.

## Operasi tingkat basis data
<a name="querying-iceberg-additional-operations-database-level-operations"></a>

Bila Anda menggunakan [DROP DATABASE](drop-database.md) dengan `CASCADE` opsi, setiap data tabel Iceberg juga dihapus. Operasi DDL berikut tidak berpengaruh pada tabel Iceberg.
+ [CREATE DATABASE](create-database.md)
+ [ALTER DATABASE SET DBPROPERTIES](alter-database-set-dbproperties.md)
+ [SHOW DATABASES](show-databases.md)
+ [SHOW TABLES](show-tables.md)
+ [SHOW VIEWS](show-views.md)

## Operasi terkait partisi
<a name="querying-iceberg-additional-operations-partition-related-operations"></a>

Karena tabel Iceberg menggunakan [partisi tersembunyi](https://iceberg.apache.org/docs/latest/partitioning/#icebergs-hidden-partitioning), Anda tidak harus bekerja dengan partisi fisik secara langsung. Akibatnya, tabel Iceberg di Athena tidak mendukung operasi DDL terkait partisi berikut:
+ [SHOW PARTITIONS](show-partitions.md)
+ [ALTER TABLE ADD PARTITION](alter-table-add-partition.md)
+ [ALTER TABLE DROP PARTITION](alter-table-drop-partition.md)
+ [ALTER TABLE RENAME PARTITION](alter-table-rename-partition.md)

[Jika Anda ingin melihat [evolusi partisi](https://iceberg.apache.org/docs/latest/evolution/#partition-evolution) Iceberg di Athena, kirim umpan balik ke athena-feedback@amazon.com.](mailto:athena-feedback@amazon.com)

## Bongkar tabel Iceberg
<a name="querying-iceberg-additional-operations-unload-iceberg-table"></a>

Tabel gunung es dapat diturunkan ke file dalam folder di Amazon S3. Untuk informasi, lihat [MEMBONGKAR](unload.md).

## PERBAIKAN MSCK
<a name="querying-iceberg-additional-operations-msck-repair"></a>

Karena tabel Iceberg melacak informasi tata letak tabel, berjalan [MSCK REPAIR TABLE](msck-repair-table.md) seperti yang dilakukan dengan tabel Hive tidak diperlukan dan tidak didukung.

# Optimalkan tabel Iceberg
<a name="querying-iceberg-data-optimization"></a>

Athena menyediakan beberapa fitur optimasi untuk meningkatkan kinerja query pada tabel Apache Iceberg. Ketika data terakumulasi, kueri dapat menjadi kurang efisien karena peningkatan overhead pemrosesan file dan biaya komputasi untuk menerapkan penghapusan tingkat baris yang disimpan dalam file penghapusan Iceberg. Untuk mengatasi tantangan ini, Athena mendukung pemadatan manual dan operator vakum untuk mengoptimalkan struktur tabel. Athena juga bekerja dengan statistik Iceberg untuk mengaktifkan optimasi kueri berbasis biaya dan pengindeksan kolom Parket untuk pemangkasan data yang tepat selama eksekusi kueri. Fitur-fitur ini bekerja sama untuk mengurangi waktu eksekusi kueri, meminimalkan pemindaian data, dan menurunkan biaya. Topik ini menjelaskan cara menggunakan kemampuan pengoptimalan ini untuk mempertahankan kueri berkinerja tinggi di tabel Iceberg Anda.

## MENGOPTIMALKAN
<a name="querying-iceberg-data-optimization-rewrite-data-action"></a>

`OPTIMIZE table REWRITE DATA`Tindakan pemadatan menulis ulang file data ke dalam tata letak yang lebih dioptimalkan berdasarkan ukuran dan jumlah file penghapusan terkait. Untuk detail properti sintaks dan tabel, lihat[MENGOPTIMALKAN](optimize-statement.md).

### Contoh
<a name="querying-iceberg-data-optimization-example"></a>

Contoh berikut menggabungkan menghapus file ke dalam file data dan menghasilkan file di dekat ukuran file yang ditargetkan di mana nilai `category` adalah`c1`.

```
OPTIMIZE iceberg_table REWRITE DATA USING BIN_PACK
  WHERE category = 'c1'
```

## VAKUM
<a name="querying-iceberg-vacuum"></a>

`VACUUM`melakukan [kedaluwarsa snapshot dan penghapusan file](https://iceberg.apache.org/docs/latest/spark-procedures/#expire_snapshots) [yatim piatu](https://iceberg.apache.org/docs/latest/spark-procedures/#remove_orphan_files). Tindakan ini mengurangi ukuran metadata dan menghapus file yang tidak dalam keadaan tabel saat ini yang juga lebih tua dari periode retensi yang ditentukan untuk tabel. Untuk detail sintaks, lihat[VAKUM](vacuum-statement.md).

### Contoh
<a name="querying-iceberg-vacuum-example"></a>

Contoh berikut menggunakan properti tabel untuk mengkonfigurasi tabel `iceberg_table` untuk mempertahankan tiga hari terakhir data, kemudian menggunakan `VACUUM` untuk kedaluwarsa snapshot lama dan menghapus file yatim dari tabel.

```
ALTER TABLE iceberg_table SET TBLPROPERTIES (
  'vacuum_max_snapshot_age_seconds'='259200'
)

VACUUM iceberg_table
```

## Gunakan statistik tabel Iceberg
<a name="querying-iceberg-data-optimization-statistics"></a>

Pengoptimal berbasis biaya Athena menggunakan statistik Iceberg untuk menghasilkan rencana kueri yang optimal. Ketika statistik telah dibuat untuk tabel Gunung Es Anda, Athena secara otomatis menggunakan informasi ini untuk membuat keputusan cerdas tentang pemesanan gabungan, filter, dan perilaku agregasi, seringkali meningkatkan kinerja kueri dan mengurangi biaya.

Statistik gunung es diaktifkan secara default saat Anda menggunakan Tabel S3. Untuk tabel Iceberg lainnya, Athena menggunakan properti tabel `use_iceberg_statistics` untuk menentukan apakah akan memanfaatkan statistik untuk optimasi berbasis biaya. Untuk memulai, lihat [Mengoptimalkan performa kueri menggunakan statistik kolom](https://docs.aws.amazon.com//glue/latest/dg/column-statistics.html) di *Panduan AWS Glue Pengguna* atau gunakan konsol [Athena](https://docs.aws.amazon.com/athena/latest/ug/cost-based-optimizer.html) untuk menghasilkan statistik sesuai permintaan pada tabel Gunung Es Anda.

## Gunakan pengindeksan kolom Parket
<a name="querying-iceberg-data-optimization-parquet-column-indexing"></a>

Pengindeksan kolom parket memungkinkan Athena melakukan pemangkasan data yang lebih tepat selama eksekusi kueri dengan memanfaatkan statistik tingkat halaman selain min/max statistik tingkat grup baris. Hal ini memungkinkan Athena untuk melewati halaman yang tidak perlu dalam grup baris, secara signifikan mengurangi jumlah data yang dipindai dan meningkatkan kinerja kueri. Ini berfungsi paling baik untuk kueri dengan predikat filter selektif pada kolom yang diurutkan, meningkatkan waktu eksekusi dan efisiensi pemindaian data sekaligus mengurangi jumlah data yang perlu dibaca Athena dari Amazon S3.

Athena menggunakan indeks kolom Parket secara default dengan Tabel S3 jika indeks kolom hadir dalam file Parket yang mendasarinya. Untuk tabel Iceberg lainnya, Athena menggunakan `use_iceberg_parquet_column_index` properti untuk menentukan apakah akan menggunakan indeks kolom dalam file Parket. Setel properti tabel ini menggunakan AWS Glue konsol atau `UpdateTable` API.

# Tampilan terwujud Katalog AWS Glue Data Kueri
<a name="querying-iceberg-gdc-mv"></a>

Athena memungkinkan Anda untuk menanyakan tampilan terwujud Katalog AWS Glue Data. Tampilan terwujud Glue Data Catalog menyimpan hasil kueri SQL yang telah dihitung sebelumnya sebagai tabel Apache Iceberg.

Saat Anda membuat tampilan terwujud Katalog Data Glue menggunakan Apache Spark di Amazon EMR atau AWS Glue, definisi tampilan dan metadata disimpan dalam Katalog Data. AWS Glue Hasil yang telah dihitung sebelumnya disimpan sebagai tabel Apache Iceberg di Amazon S3. Anda dapat menanyakan tampilan terwujud ini dari Athena menggunakan pernyataan `SELECT` SQL standar, sama seperti Anda akan menanyakan tabel Iceberg biasa.

## Prasyarat
<a name="querying-iceberg-gdc-mv-prerequisites"></a>

Sebelum Anda menanyakan tampilan terwujud di Athena, pastikan hal berikut:
+ Tampilan terwujud ada di Katalog AWS Glue Data dan dibuat menggunakan Apache Spark (Amazon EMR rilis 7.12.0 atau yang lebih baru, atau versi 5.1 atau yang lebih baru) AWS Glue 
+ Untuk menanyakan tampilan terwujud di Athena, Anda memerlukan izin berikut AWS Lake Formation :
  + `SELECT`izin pada tampilan terwujud
  + `DESCRIBE`izin pada tampilan terwujud
  + Akses ke lokasi Amazon S3 yang mendasari tempat data tampilan terwujud disimpan
+ Data dasar tampilan terwujud disimpan di bucket Tabel Amazon S3 atau bucket tujuan umum Amazon S3
+ Anda memiliki akses ke database Katalog AWS Glue Data yang berisi tampilan terwujud
+ Untuk tampilan terwujud yang disimpan di bucket Amazon S3 Tables, pastikan peran IAM Anda memiliki izin yang diperlukan untuk mengakses katalog Tabel S3.

## Pertimbangan dan batasan
<a name="querying-iceberg-gdc-mv-considerations"></a>
+ Athena tidak mendukung operasi berikut pada pandangan terwujud:`ALTER`,,,,,`CREATE MATERIALIZED VIEW`,`REFRESH MATERIALIZED VIEW`,`DROP`,`INSERT`, `UPDATE``MERGE`,`DELETE`. `OPTIMIZE` `VACUUM` Untuk membuat tampilan terwujud, gunakan Apache Spark di Amazon EMR atau. AWS Glue Operasi penyegaran harus dilakukan melalui AWS Glue Data Catalog API atau Apache Spark. Ubah tampilan terwujud menggunakan Apache Spark.

## Menanyakan tampilan yang terwujud
<a name="querying-iceberg-gdc-mv-operations"></a>

Athena memperlakukan tampilan terwujud sebagai tabel Iceberg standar untuk operasi baca, memungkinkan Anda mengakses data yang telah dihitung sebelumnya tanpa memerlukan perubahan sintaks atau konfigurasi khusus.

Untuk menanyakan tampilan terwujud di Athena, gunakan `SELECT` pernyataan standar:

```
SELECT * FROM my_database.sales_summary_mv;
```

Anda dapat menerapkan filter, agregasi, dan bergabung seperti yang Anda lakukan dengan tabel biasa:

```
SELECT
  region,
  SUM(total_sales) as sales_total
FROM my_database.sales_summary_mv
WHERE year = 2025
GROUP BY region
ORDER BY sales_total DESC;
```

## Operasi yang didukung
<a name="querying-iceberg-gdc-mv-supported"></a>

Athena mendukung operasi berikut pada pandangan terwujud:
+ `SELECT`query - Membaca data dari tampilan terwujud menggunakan pernyataan SQL standar `SELECT`
+ `DESCRIBE`- Lihat skema dan metadata tampilan terwujud
+ `SHOW TABLES`- Daftar tampilan terwujud bersama dengan tabel lain dalam database
+ `JOIN`operasi - Bergabunglah dengan tampilan terwujud dengan tabel atau tampilan lain
+ Pemfilteran dan agregasi - Menerapkan `WHERE` klausa,, `GROUP BY` dan fungsi agregat

# Tipe data yang didukung untuk tabel Iceberg di Athena
<a name="querying-iceberg-supported-data-types"></a>

Athena dapat menanyakan tabel Iceberg yang berisi tipe data berikut:

```
binary
boolean
date
decimal
double
float
int
list
long
map
string
struct
timestamp without time zone
```

Untuk informasi selengkapnya tentang jenis tabel Iceberg, lihat [halaman skema untuk Iceberg](https://iceberg.apache.org/docs/latest/schemas/) dalam dokumentasi Apache.

Tabel berikut menunjukkan hubungan antara tipe data Athena dan tipe data tabel Iceberg.


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/querying-iceberg-supported-data-types.html)

Untuk informasi selengkapnya tentang tipe data di Athena, lihat. [Tipe data di Amazon Athena](data-types.md)

# Sumber daya tambahan
<a name="querying-iceberg-additional-resources"></a>

Artikel berikut ada di dokumentasi Panduan AWS Preskriptif.
+ [Bekerja dengan tabel Apache Iceberg dengan menggunakan Amazon Athena SQL](https://docs.aws.amazon.com/prescriptive-guidance/latest/apache-iceberg-on-aws/iceberg-athena.html) 

*Untuk artikel mendalam tentang penggunaan Athena dengan tabel Apache Iceberg, lihat posting berikut di Big Data Blog.AWS *
+ [Menerapkan proses CDC tanpa server dengan Apache Iceberg menggunakan Amazon DynamoDB dan Amazon Athena](https://aws.amazon.com/blogs/big-data/implement-a-serverless-cdc-process-with-apache-iceberg-using-amazon-dynamodb-and-amazon-athena/) 
+ [Mempercepat rekayasa fitur ilmu data di danau data transaksional menggunakan Amazon Athena dengan Apache Iceberg](https://aws.amazon.com/blogs/big-data/accelerate-data-science-feature-engineering-on-transactional-data-lakes-using-amazon-athena-with-apache-iceberg/) 
+ [Bangun data lake Apache Iceberg menggunakan Amazon Athena, Amazon EMR, dan AWS Glue](https://aws.amazon.com/blogs/big-data/build-an-apache-iceberg-data-lake-using-amazon-athena-amazon-emr-and-aws-glue/) 
+ [Lakukan upserts di danau data menggunakan Amazon Athena dan Apache Iceberg](https://aws.amazon.com/blogs/big-data/perform-upserts-in-a-data-lake-using-amazon-athena-and-apache-iceberg/) 
+ [Membangun data lake transaksional menggunakan Apache Iceberg, AWS Glue, dan berbagi data lintas akun menggunakan dan Amazon Athena AWS Lake Formation](https://aws.amazon.com/blogs/big-data/build-a-transactional-data-lake-using-apache-iceberg-aws-glue-and-cross-account-data-shares-using-aws-lake-formation-and-amazon-athena/) 
+ [Gunakan Apache Iceberg di danau data untuk mendukung pemrosesan data tambahan](https://aws.amazon.com/blogs/big-data/use-apache-iceberg-in-a-data-lake-to-support-incremental-data-processing/) 
+ [Bangun danau data Apache Iceberg yang selaras dengan GDPR secara real-time](https://aws.amazon.com/blogs/big-data/build-a-real-time-gdpr-aligned-apache-iceberg-data-lake/) 
+ [Mengotomatiskan replikasi sumber relasional menjadi danau data transaksional dengan Apache Iceberg dan AWS Glue](https://aws.amazon.com/blogs/big-data/automate-replication-of-relational-sources-into-a-transactional-data-lake-with-apache-iceberg-and-aws-glue/) 
+ [Berinteraksi dengan tabel Apache Iceberg menggunakan Amazon Athena dan izin berbutir halus lintas akun menggunakan AWS Lake Formation](https://aws.amazon.com/blogs/big-data/interact-with-apache-iceberg-tables-using-amazon-athena-and-cross-account-fine-grained-permissions-using-aws-lake-formation/) 
+ [Bangun danau data transaksional tanpa server dengan Apache Iceberg, Amazon EMR Tanpa Server, dan Amazon Athena](https://aws.amazon.com/blogs/big-data/build-a-serverless-transactional-data-lake-with-apache-iceberg-amazon-emr-serverless-and-amazon-athena/) 