

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

# Manajemen beban kerja
<a name="workload-management"></a>

Anda dapat menggunakan grup kerja Athena, manajemen kapasitas, penyetelan kinerja, dukungan kompresi, tag, dan fitur kuota layanan untuk mengelola beban kerja Anda.

**Topics**
+ [Gunakan kelompok kerja untuk mengontrol akses kueri dan biaya](workgroups-manage-queries-control-costs.md)
+ [Kelola kapasitas pemrosesan kueri](capacity-management.md)
+ [Optimalkan kinerja Athena](performance-tuning.md)
+ [Gunakan kompresi di Athena](compression-formats.md)
+ [Tag sumber daya Athena](tags.md)
+ [Service Quotas](service-limits.md)

# Gunakan kelompok kerja untuk mengontrol akses kueri dan biaya
<a name="workgroups-manage-queries-control-costs"></a>

Anda dapat menggunakan workgroup Athena untuk memisahkan beban kerja, mengontrol akses tim, menerapkan konfigurasi, dan melacak metrik kueri dan mengontrol biaya.

**Pisahkan beban kerja Anda**  
Anda dapat menggunakan workgroup untuk memisahkan beban kerja. Misalnya, Anda dapat membuat dua kelompok kerja independen, satu untuk aplikasi terjadwal otomatis, seperti pembuatan laporan, dan satu lagi untuk penggunaan ad-hoc oleh analis. 

**Kontrol akses oleh tim**  
Karena grup kerja bertindak sebagai sumber daya IAM, Anda dapat menggunakan kebijakan berbasis identitas tingkat sumber daya untuk mengontrol siapa yang dapat mengakses grup kerja dan menjalankan kueri di dalamnya. Untuk mengisolasi kueri untuk dua tim berbeda di organisasi Anda, Anda dapat membuat grup kerja terpisah untuk setiap tim. Setiap workgroup memiliki riwayat kueri sendiri dan daftar kueri yang disimpan untuk kueri di workgroup tersebut, dan tidak untuk semua kueri di akun. Untuk informasi selengkapnya, lihat [Menggunakan kebijakan IAM untuk mengontrol akses workgroup](workgroups-iam-policy.md). 

**Menegakkan konfigurasi**  
Secara opsional, Anda dapat menerapkan setelan seluruh grup kerja yang sama untuk semua kueri yang berjalan di grup kerja. Setelan ini mencakup lokasi hasil kueri di Amazon S3, pemilik bucket yang diharapkan, enkripsi, dan kontrol objek yang ditulis ke bucket hasil kueri. Untuk informasi selengkapnya, lihat [Ganti pengaturan sisi klien](workgroups-settings-override.md).

**Lacak metrik kueri, peristiwa kueri, dan kontrol biaya**  
Untuk melacak metrik kueri, peristiwa kueri, dan mengontrol biaya untuk setiap workgroup Athena, Anda dapat menggunakan fitur berikut:
+ **Publikasikan metrik kueri** — Publikasikan metrik kueri untuk grup kerja Anda. CloudWatch Di konsol Athena, Anda dapat melihat metrik kueri untuk setiap grup kerja. Di CloudWatch, Anda dapat membuat dasbor khusus, dan mengatur ambang batas dan alarm pada metrik ini. Untuk informasi selengkapnya, lihat [Aktifkan metrik CloudWatch kueri di Athena](athena-cloudwatch-metrics-enable.md) dan [Pantau metrik kueri Athena dengan CloudWatch](query-metrics-viewing.md).
+ **Pantau metrik penggunaan Athena** — Lihat cara akun Anda menggunakan sumber daya dengan menampilkan penggunaan layanan Anda saat ini melalui CloudWatch grafik dan dasbor. Untuk informasi selengkapnya, lihat [Pantau metrik penggunaan Athena dengan CloudWatch](monitoring-athena-usage-metrics.md)
+ **Memantau peristiwa kueri** — Gunakan Amazon EventBridge untuk menerima pemberitahuan real-time mengenai status kueri Anda. Untuk informasi selengkapnya, lihat [Pantau acara kueri Athena dengan EventBridge](athena-events.md).
+ **Buat kontrol penggunaan data** — Di Athena, Anda dapat mengonfigurasi kontrol penggunaan data per kueri dan per-grup kerja. Athena membatalkan kueri saat melebihi ambang batas yang ditentukan atau mengaktifkan alarm Amazon SNS saat ambang batas grup kerja dilanggar. Untuk informasi selengkapnya, lihat [Konfigurasikan kontrol penggunaan data per kueri dan per-kelompok kerja](workgroups-setting-control-limits-cloudwatch.md).
+ **Gunakan tag alokasi biaya** — Gunakan konsol Billing and Cost Management untuk menandai grup kerja dengan tag alokasi biaya. Biaya yang terkait dengan menjalankan kueri di workgroup muncul di Laporan Biaya dan Penggunaan Anda dengan tag alokasi biaya yang sesuai. *Untuk informasi selengkapnya, lihat [Menggunakan tag alokasi biaya yang ditentukan pengguna di Panduan](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html) Pengguna.AWS Billing *
+ **Gunakan reservasi kapasitas** — Anda dapat membuat reservasi kapasitas dengan jumlah unit pemrosesan data yang Anda tentukan dan menambahkan satu atau beberapa kelompok kerja ke reservasi. Untuk informasi selengkapnya, lihat [Kelola kapasitas pemrosesan kueri](capacity-management.md).

Untuk informasi tambahan tentang menggunakan grup kerja Athena untuk memisahkan beban kerja, mengontrol akses pengguna, dan mengelola penggunaan dan biaya kueri, lihat Posting Blog AWS Big Data [Kueri terpisah dan mengelola biaya menggunakan grup kerja Amazon](https://aws.amazon.com/blogs/big-data/separating-queries-and-managing-costs-using-amazon-athena-workgroups/) Athena.

**catatan**  
Sumber daya Amazon Athena sekarang dapat diakses dalam Amazon SageMaker Unified Studio (Pratinjau), yang membantu Anda mengakses data organisasi dan menindaklanjutinya dengan alat terbaik. Anda dapat memigrasikan kueri yang disimpan dari grup kerja Athena ke proyek Studio SageMaker Terpadu, mengonfigurasi proyek dengan grup kerja Athena yang ada, dan mempertahankan izin yang diperlukan melalui pembaruan peran IAM. Untuk informasi selengkapnya, lihat [Memigrasi sumber daya Amazon Athena ke SageMaker Amazon Unified Studio](https://github.com/aws/Unified-Studio-for-Amazon-Sagemaker/tree/main/migration/athena) (Pratinjau).

## Pertimbangan dan batasan
<a name="workgroups-considerations-limitations"></a>

Saat Anda menggunakan kelompok kerja di Athena, ingatlah hal-hal berikut:
+ Setiap akun memiliki kelompok kerja utama. Secara default, jika Anda belum membuat grup kerja apa pun, semua kueri di akun Anda berjalan di workgroup utama. Workgroup utama tidak dapat dihapus. Izin default memungkinkan semua pengguna yang diautentikasi mengakses ke workgroup ini. 
+ Jika Anda memiliki akses ke grup kerja, Anda dapat melihat pengaturan, metrik, dan batas kontrol penggunaan data grup kerja. Dengan izin tambahan, Anda dapat mengedit pengaturan dan batas kontrol penggunaan data. 
+ Saat Anda menjalankan kueri, kueri tersebut berjalan di workgroup saat ini. Anda dapat menjalankan kueri dalam konteks workgroup di konsol, melalui operasi API, melalui antarmuka baris perintah, atau melalui aplikasi klien dengan menggunakan driver JDBC atau ODBC. 
+ Di editor kueri konsol Athena, Anda dapat membuka hingga sepuluh tab kueri dalam setiap grup kerja. Saat Anda beralih di antara kelompok kerja, tab kueri Anda tetap terbuka untuk maksimal tiga grup kerja. 
+ Anda dapat membuat hingga 1000 workgroup per Wilayah AWS akun Anda. 
+ Kelompok kerja dapat dinonaktifkan. Menonaktifkan workgroup mencegah kueri berjalan di workgroup hingga Anda mengaktifkan kembali workgroup.
+ Athena memperingatkan Anda jika Anda mencoba menghapus workgroup yang berisi kueri tersimpan. Sebelum Anda menghapus grup kerja yang dapat diakses pengguna lain, pastikan mereka memiliki akses ke grup kerja lain yang dapat mereka gunakan untuk menjalankan kueri. 

**Topics**
+ [Pertimbangan dan batasan](#workgroups-considerations-limitations)
+ [Buat grup kerja](creating-workgroups.md)
+ [Kelola kelompok kerja](workgroups-create-update-delete.md)
+ [Gunakan CloudWatch dan EventBridge untuk memantau kueri](workgroups-control-limits.md)
+ [Gunakan workgroup Athena APIs](workgroups-api-list.md)
+ [Memecahkan masalah kelompok kerja](workgroups-troubleshooting.md)

# Buat grup kerja
<a name="creating-workgroups"></a>

Membuat workgroup memerlukan izin untuk tindakan `CreateWorkgroup` API. Lihat [Konfigurasikan akses ke grup kerja dan tag](workgroups-access.md) dan [Menggunakan kebijakan IAM untuk mengontrol akses workgroup](workgroups-iam-policy.md). Jika Anda menambahkan tag, Anda juga perlu menambahkan izin ke`TagResource`. Lihat [Contoh kebijakan tag untuk kelompok kerja](tags-access-control.md#tag-policy-examples-workgroups).

Prosedur berikut menunjukkan cara menggunakan konsol Athena untuk membuat workgroup. Untuk membuat workgroup menggunakan Athena API, lihat. [CreateWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_CreateWorkGroup.html)

**Untuk membuat workgroup di konsol Athena**

1.  Tentukan kelompok kerja mana yang akan dibuat. Beberapa faktor yang perlu dipertimbangkan meliputi:
   + Siapa yang dapat menjalankan kueri di setiap workgroup, dan siapa yang memiliki konfigurasi workgroup. Gunakan kebijakan IAM untuk menerapkan izin grup kerja. Untuk informasi selengkapnya, lihat [Menggunakan kebijakan IAM untuk mengontrol akses workgroup](workgroups-iam-policy.md).
   + Lokasi di Amazon S3 yang akan digunakan untuk hasil kueri untuk workgroup. Semua pengguna workgroup harus memiliki akses ke lokasi ini.
   + Apakah hasil kueri workgroup harus dienkripsi. Karena enkripsi adalah per-kelompok kerja (bukan per kueri), Anda harus membuat grup kerja terpisah untuk hasil kueri terenkripsi dan tidak terenkripsi. Untuk informasi selengkapnya, lihat [Enkripsi hasil kueri Athena yang disimpan di Amazon S3](encrypting-query-results-stored-in-s3.md).

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.  
![\[Pilih menu ekspansi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/nav-pane-expansion.png)

1. **Di panel navigasi konsol Athena, pilih Workgroups.**

1. Pada **Grup Kerja**, pilih **Buat grup kerja**. 

1. Pada halaman **Create workgroup**, isi kolom sebagai berikut:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/creating-workgroups.html)

1. Pilih **Buat grup kerja**. Workgroup muncul dalam daftar di halaman **Workgroups**.

   Di editor kueri, Athena menampilkan workgroup saat ini di opsi **Workgroup** di kanan atas konsol. Anda dapat menggunakan opsi ini untuk beralih kelompok kerja. Saat Anda menjalankan kueri, kueri tersebut berjalan di workgroup saat ini.

1. Buat kebijakan IAM untuk pengguna, grup, atau peran Anda untuk mengaktifkan akses mereka ke grup kerja. Kebijakan menetapkan keanggotaan kelompok kerja dan akses ke tindakan pada `workgroup` sumber daya. Untuk informasi selengkapnya, lihat [Menggunakan kebijakan IAM untuk mengontrol akses workgroup](workgroups-iam-policy.md). Misalnya kebijakan JSON, lihat[Konfigurasikan akses ke grup kerja dan tag](workgroups-access.md).

1. (Opsional) Konfigurasikan tingkat enkripsi minimal di Amazon S3 untuk semua hasil kueri dari grup kerja saat enkripsi seluruh grup kerja tidak diberlakukan oleh opsi ganti setelan sisi klien. Anda dapat menggunakan fitur ini untuk memastikan bahwa hasil kueri tidak pernah disimpan dalam bucket Amazon S3 dalam status tidak terenkripsi. Untuk informasi selengkapnya, lihat [Konfigurasikan enkripsi minimum untuk grup kerja](workgroups-minimum-encryption.md).

1. (Opsional) Gunakan Amazon CloudWatch dan Amazon EventBridge untuk memantau kueri grup kerja Anda dan mengontrol biaya. Untuk informasi selengkapnya, lihat [Menggunakan CloudWatch dan EventBridge memantau kueri dan mengendalikan biaya](workgroups-control-limits.md).

1. (Opsional) Gunakan konsol Billing and Cost Management untuk menandai workgroup dengan tag alokasi biaya. *Untuk informasi selengkapnya, lihat [Menggunakan tag alokasi biaya yang ditentukan pengguna di Panduan](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html) Pengguna.AWS Billing *

1. (Opsional) Untuk mendapatkan kapasitas pemrosesan khusus untuk kueri di workgroup, tambahkan workgroup ke reservasi kapasitas. Anda dapat menetapkan satu atau beberapa grup kerja ke reservasi. Untuk informasi selengkapnya, lihat [Kelola kapasitas pemrosesan kueri](capacity-management.md).

# Ganti pengaturan sisi klien
<a name="workgroups-settings-override"></a>

Saat membuat atau mengedit grup kerja, Anda dapat memilih opsi Ganti setelan **sisi klien**. Opsi ini tidak dipilih secara default. Tergantung pada apakah Anda memilihnya, Athena melakukan hal berikut:
+ Jika **Override pengaturan sisi klien** tidak dipilih, pengaturan workgroup tidak diberlakukan di tingkat klien. Jika opsi ganti setelan sisi klien tidak dipilih untuk grup kerja, Athena menggunakan setelan klien untuk semua kueri yang berjalan di grup kerja, termasuk pengaturan untuk lokasi hasil kueri, pemilik bucket yang diharapkan, enkripsi, dan kontrol objek yang ditulis ke bucket hasil kueri. Setiap pengguna dapat menentukan pengaturan mereka sendiri di menu **Pengaturan** di konsol. Jika pengaturan sisi klien tidak disetel, pengaturan seluruh grup kerja berlaku. Jika Anda menggunakan, tindakan API AWS CLI, atau driver JDBC dan ODBC untuk menjalankan kueri dalam grup kerja yang tidak mengganti setelan sisi klien, kueri Anda menggunakan setelan yang Anda tentukan dalam kueri.
+ Jika **Override setelan sisi klien dipilih, pengaturan** workgroup diberlakukan di tingkat workgroup untuk semua klien di workgroup. Saat opsi ganti setelan sisi klien dipilih untuk grup kerja, Athena menggunakan setelan grup kerja untuk semua kueri yang berjalan di grup kerja, termasuk pengaturan untuk lokasi hasil kueri, pemilik bucket yang diharapkan, enkripsi, dan kontrol objek yang ditulis ke bucket hasil kueri. Pengaturan Workgroup mengganti setelan sisi klien yang Anda tentukan untuk kueri saat Anda menggunakan konsol, tindakan API, atau driver JDBC atau ODBC. Setelah pengaturan grup kerja diatur untuk mengganti pengaturan sisi klien, pengaturan sisi klien di driver atau API dapat dihilangkan.

  Jika Anda mengganti setelan sisi klien, saat berikutnya Anda atau pengguna grup kerja mana pun membuka konsol Athena, Athena memberi tahu Anda bahwa kueri di grup kerja menggunakan pengaturan grup kerja, dan meminta Anda untuk mengakui perubahan ini.
**catatan**  
Karena mengganti pengaturan sisi klien dapat merusak otomatisasi khusus yang didasarkan pada ketersediaan hasil dalam bucket Amazon S3 yang sewenang-wenang, sebaiknya Anda memberi tahu pengguna sebelum mengganti.
**penting**  
Jika Anda menggunakan tindakan API, driver AWS CLI, atau JDBC dan ODBC untuk menjalankan kueri dalam grup kerja yang mengganti setelan sisi klien, pastikan Anda menghilangkan setelan sisi klien dalam kueri atau memperbaruinya agar sesuai dengan pengaturan grup kerja.   
Jika Anda menentukan setelan sisi klien dalam kueri tetapi menjalankannya di grup kerja yang mengesampingkan pengaturan, kueri akan berjalan, tetapi pengaturan grup kerja akan digunakan. Untuk informasi tentang melihat setelan untuk grup kerja, lihat[Lihat detail workgroup](viewing-details-workgroups.md).

# Kelola kelompok kerja
<a name="workgroups-create-update-delete"></a>

Di konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home), Anda dapat melakukan tugas-tugas berikut:




| Pernyataan | Deskripsi | 
| --- | --- | 
|  [Buat grup kerja](creating-workgroups.md)  |  Buat workgroup baru.  | 
| [Lihat detail workgroup](viewing-details-workgroups.md) | Lihat detail grup kerja, seperti nama, deskripsi, batas penggunaan data, lokasi hasil kueri, pemilik bucket hasil kueri yang diharapkan, enkripsi, dan kontrol objek yang ditulis ke bucket hasil kueri. Anda juga dapat memverifikasi apakah workgroup ini memberlakukan pengaturannya, jika Override setelan sisi klien dicentang. | 
|  [Tentukan workgroup untuk kueri](specify-wkgroup-to-athena-in-which-to-run-queries.md)  |  Sebelum Anda dapat menjalankan kueri, Anda harus menentukan ke Athena workgroup mana yang akan digunakan. Anda harus memiliki izin untuk workgroup.   | 
|  [Beralih kelompok kerja](switching-workgroups.md)  |  Beralih di antara kelompok kerja yang dapat Anda akses.   | 
|  [Mengedit grup kerja](editing-workgroups.md)  | Edit workgroup dan ubah pengaturannya. Anda tidak dapat mengubah nama grup kerja, tetapi Anda dapat membuat grup kerja baru dengan pengaturan yang sama dan nama yang berbeda. | 
|  [Mengaktifkan atau menonaktifkan workgroup](workgroups-enabled-disabled.md)  |  Mengaktifkan atau menonaktifkan workgroup. Saat workgroup dinonaktifkan, penggunanya tidak dapat menjalankan kueri, atau membuat kueri bernama baru. Jika Anda memiliki akses ke sana, Anda masih dapat melihat metrik, kontrol batas penggunaan data, pengaturan grup kerja, riwayat kueri, dan kueri yang disimpan.  | 
|  [Salin kueri yang disimpan di antara kelompok kerja](copy-a-query-between-workgroups.md)  | Salin kueri yang disimpan di antara kelompok kerja. Anda mungkin ingin melakukan ini jika, misalnya, Anda membuat kueri di workgroup pratinjau dan Anda ingin membuatnya tersedia di workgroup nonpreview. | 
|  [Menghapus grup kerja](deleting-workgroups.md)  |  Hapus grup kerja. Jika Anda menghapus grup kerja, riwayat kueri, kueri yang disimpan, pengaturan grup kerja, dan kontrol batas data per kueri akan dihapus. Kontrol batas data seluruh grup kerja tetap ada CloudWatch, dan Anda dapat menghapusnya satu per satu. Workgroup utama tidak dapat dihapus.  | 
| [Menggunakan kebijakan IAM untuk mengontrol akses workgroup](workgroups-iam-policy.md) | Gunakan kebijakan IAM untuk mengontrol akses workgroup. Misalnya kebijakan workgroup, lihat[Contoh kebijakan workgroup](example-policies-workgroup.md). | 
| [Buat workgroup Athena yang menggunakan autentikasi IAM Identity Center](workgroups-identity-center.md) | Untuk menggunakan identitas Pusat Identitas IAM dengan Athena, Anda harus membuat grup kerja yang diaktifkan Pusat Identitas IAM. Setelah membuat grup kerja, Anda dapat menggunakan konsol Pusat Identitas IAM atau API untuk menetapkan pengguna atau grup Pusat Identitas IAM ke grup kerja. | 
| [Konfigurasikan enkripsi minimum untuk grup kerja](workgroups-minimum-encryption.md) | Menerapkan tingkat enkripsi minimal di Amazon S3 untuk semua hasil kueri dari workgroup. Gunakan fitur ini untuk memastikan bahwa hasil kueri tidak pernah disimpan dalam bucket Amazon S3 dalam status tidak terenkripsi. | 

# Lihat detail workgroup
<a name="viewing-details-workgroups"></a>

Untuk setiap workgroup, Anda dapat melihat detailnya. Detailnya mencakup nama grup kerja, deskripsi, apakah itu diaktifkan atau dinonaktifkan, dan setelan yang digunakan untuk kueri yang berjalan di grup kerja, yang mencakup lokasi hasil kueri, pemilik bucket yang diharapkan, enkripsi, dan kontrol objek yang ditulis ke bucket hasil kueri. Jika workgroup memiliki batas penggunaan data, mereka juga ditampilkan.

**Untuk melihat detail workgroup**

1. **Di panel navigasi konsol Athena, pilih Workgroups.**

1. Pada halaman **Workgroups**, pilih link workgroup yang ingin Anda lihat. Halaman **Rincian Ikhtisar** untuk tampilan workgroup.

# Tentukan workgroup untuk kueri
<a name="specify-wkgroup-to-athena-in-which-to-run-queries"></a>

Untuk menentukan workgroup yang akan digunakan, Anda harus memiliki izin ke workgroup. 

**Untuk menentukan workgroup yang akan digunakan**

1. Pastikan izin Anda memungkinkan Anda menjalankan kueri di workgroup yang ingin Anda gunakan. Untuk informasi selengkapnya, lihat [Menggunakan kebijakan IAM untuk mengontrol akses workgroup](workgroups-iam-policy.md).

1.  Untuk menentukan workgroup, gunakan salah satu opsi ini: 
   + [Jika Anda menggunakan konsol Athena, atur workgroup dengan beralih workgroup.](switching-workgroups.md)
   + Jika Anda menggunakan operasi Athena API, tentukan nama workgroup dalam tindakan API. Misalnya, Anda dapat mengatur nama workgroup [StartQueryExecution](https://docs.aws.amazon.com/athena/latest/APIReference/API_StartQueryExecution.html), sebagai berikut: 

     ```
     StartQueryExecutionRequest startQueryExecutionRequest = new StartQueryExecutionRequest()
                   .withQueryString(ExampleConstants.ATHENA_SAMPLE_QUERY)
                   .withQueryExecutionContext(queryExecutionContext)
                   .withWorkGroup(WorkgroupName)
     ```
   + Jika Anda menggunakan driver JDBC atau ODBC, atur nama workgroup dalam string koneksi menggunakan parameter konfigurasi. `Workgroup` Sopir melewati nama grup kerja untuk Athena. Tentukan parameter workgroup dalam string koneksi seperti pada contoh berikut: 

     ```
     jdbc:awsathena://AwsRegion=<AWSREGION>;UID=<ACCESSKEY>;
     PWD=<SECRETKEY>;S3OutputLocation=s3://amzn-s3-demo-bucket/<athena-output>-<AWSREGION>/;
     Workgroup=<WORKGROUPNAME>;
     ```

# Beralih kelompok kerja
<a name="switching-workgroups"></a>

Anda dapat beralih dari satu grup kerja ke grup lain jika Anda memiliki izin untuk keduanya.

Anda dapat membuka hingga sepuluh tab kueri dalam setiap workgroup. Saat Anda beralih di antara grup kerja, tab kueri Anda tetap terbuka hingga tiga grup kerja. 

**Untuk beralih kelompok kerja**

1. Di konsol Athena, gunakan opsi **Workgroup** di kanan atas untuk memilih workgroup. 

1. Jika kotak dialog ***workgroup-name*Pengaturan Workgroup** muncul, pilih **Akui**.

Opsi **Workgroup** menunjukkan nama workgroup yang Anda alihkan. Anda sekarang dapat menjalankan kueri di workgroup ini.

# Mengedit grup kerja
<a name="editing-workgroups"></a>

Mengedit workgroup memerlukan izin untuk operasi `UpdateWorkgroup` API. Lihat [Konfigurasikan akses ke grup kerja dan tag](workgroups-access.md) dan [Menggunakan kebijakan IAM untuk mengontrol akses workgroup](workgroups-iam-policy.md). Jika Anda menambahkan atau mengedit tag, Anda juga harus memiliki izin untuk`TagResource`. Lihat [Contoh kebijakan tag untuk kelompok kerja](tags-access-control.md#tag-policy-examples-workgroups).

**Untuk mengedit workgroup di konsol**

1. **Di panel navigasi konsol Athena, pilih Workgroups.**

1. Pada halaman **Workgroups**, pilih tombol untuk workgroup yang ingin Anda edit. 

1. Pilih **Tindakan**, **Edit**.

1. Ubah bidang sesuai kebutuhan. Untuk daftar bidang, lihat [Membuat workgroup](creating-workgroups.md). Anda dapat mengubah semua bidang kecuali nama workgroup. Jika Anda perlu mengubah nama, buat workgroup lain dengan nama baru dan pengaturan yang sama.

1. Pilih **Simpan perubahan**. Workgroup yang diperbarui muncul dalam daftar di halaman **Workgroups**.

# Mengaktifkan atau menonaktifkan workgroup
<a name="workgroups-enabled-disabled"></a>

Jika Anda memiliki izin untuk melakukannya, Anda dapat mengaktifkan atau menonaktifkan grup kerja di konsol, dengan menggunakan operasi API, atau dengan driver JDBC dan ODBC.

**Untuk mengaktifkan atau menonaktifkan workgroup**

1. **Di panel navigasi konsol Athena, pilih Workgroups.**

1. Pada halaman **Workgroups**, pilih link untuk workgroup. 

1. Di kanan atas, pilih **Aktifkan grup kerja atau Nonaktifkan grup** **kerja**.

1. Pada prompt konfirmasi, pilih **Aktifkan** atau **Nonaktifkan**. Jika Anda menonaktifkan workgroup, penggunanya tidak dapat menjalankan kueri di dalamnya, atau membuat kueri bernama baru. Jika Anda mengaktifkan workgroup, pengguna dapat menggunakannya untuk menjalankan kueri.

# Salin kueri yang disimpan di antara kelompok kerja
<a name="copy-a-query-between-workgroups"></a>

Saat ini, konsol Athena tidak memiliki opsi untuk menyalin kueri yang disimpan dari satu grup kerja ke grup kerja lainnya secara langsung, tetapi Anda dapat melakukan tugas yang sama secara manual dengan menggunakan prosedur berikut.

**Untuk menyalin kueri yang disimpan di antara kelompok kerja**

1. Di konsol Athena, dari workgroup tempat Anda ingin menyalin kueri, pilih tab Kueri **tersimpan**. 

1. Pilih tautan kueri tersimpan yang ingin Anda salin. Athena membuka kueri di editor kueri.

1. Di editor kueri, pilih teks kueri, lalu tekan **Ctrl\$1C** untuk menyalinnya.

1. [Beralih](switching-workgroups.md) ke workgroup tujuan, atau [buat workgroup](creating-workgroups.md), lalu beralih ke workgroup tujuan.

1. Buka tab baru di editor kueri, lalu tekan **Ctrl\$1V** untuk menempelkan teks ke tab baru.

1. Di editor kueri, pilih **Simpan sebagai** untuk menyimpan kueri di workgroup tujuan.

1. Dalam kotak dialog **Pilih nama**, masukkan nama untuk kueri dan deskripsi opsional.

1. Pilih **Simpan**.

# Menghapus grup kerja
<a name="deleting-workgroups"></a>

Anda dapat menghapus workgroup jika Anda memiliki izin untuk melakukannya. Workgroup utama tidak dapat dihapus. 

Jika Anda memiliki izin, Anda dapat menghapus workgroup kosong kapan saja. Anda juga dapat menghapus workgroup yang berisi kueri tersimpan. Dalam hal ini, sebelum melanjutkan untuk menghapus workgroup, Athena memperingatkan Anda bahwa kueri yang disimpan akan dihapus.

Jika Anda menghapus workgroup saat Anda berada di dalamnya, konsol akan mengalihkan fokus ke workgroup utama. Jika Anda memiliki akses ke sana, Anda dapat menjalankan kueri dan melihat pengaturannya.

Jika Anda menghapus grup kerja, pengaturan dan kontrol batas data per kueri akan dihapus. Kontrol batas data seluruh grup kerja tetap ada CloudWatch, dan Anda dapat menghapusnya di sana jika diperlukan.

**penting**  
Sebelum menghapus workgroup, pastikan bahwa penggunanya juga termasuk dalam kelompok kerja lain di mana mereka dapat terus menjalankan kueri. Jika kebijakan IAM pengguna mengizinkan mereka menjalankan kueri *hanya* di grup kerja ini, dan Anda menghapusnya, mereka tidak lagi memiliki izin untuk menjalankan kueri. Untuk informasi selengkapnya, lihat [Example policy for running queries in the primary workgroup](example-policies-workgroup.md#example4-run-in-primary-access).

**Untuk menghapus workgroup di konsol**

1. **Di panel navigasi konsol Athena, pilih Workgroups.**

1. Pada halaman **Workgroups**, pilih tombol untuk workgroup yang ingin Anda hapus.

1. Pilih **Tindakan**, **Hapus**.

1. **Pada prompt konfirmasi **Delete workgroup**, masukkan nama workgroup, lalu pilih Hapus.**

Untuk menghapus workgroup dengan operasi API, gunakan `DeleteWorkGroup` tindakan.

# Menggunakan CloudWatch dan EventBridge memantau kueri dan mengendalikan biaya
<a name="workgroups-control-limits"></a>

Workgroup memungkinkan Anda menyetel batas kontrol penggunaan data per kueri atau per grup kerja, mengatur alarm saat batas tersebut terlampaui, dan memublikasikan metrik kueri ke. CloudWatch

Di setiap kelompok kerja, Anda dapat:
+ Konfigurasikan **kontrol penggunaan data** per kueri dan per grup kerja, dan buat tindakan yang akan diambil jika kueri melanggar ambang batas.
+ Melihat dan menganalisis metrik kueri, dan mempublikasikannya ke CloudWatch. Jika Anda membuat grup kerja di konsol, pengaturan untuk memublikasikan metrik CloudWatch dipilih untuk Anda. Jika Anda menggunakan operasi API, Anda harus [mengaktifkan penerbitan metrik](athena-cloudwatch-metrics-enable.md). Saat metrik diterbitkan, metrik ditampilkan di bawah tab **Metrik** di panel **Workgroups**. Metrik dinonaktifkan secara default untuk workgroup utama. 

## Video
<a name="athena-cloudwatch-metrics-video"></a>

Video berikut menunjukkan cara membuat dasbor khusus dan menyetel alarm dan pemicu pada metrik. CloudWatch Anda dapat menggunakan dasbor yang telah diisi sebelumnya langsung dari konsol Athena untuk menggunakan metrik kueri ini.

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


**Topics**
+ [Video](#athena-cloudwatch-metrics-video)
+ [Aktifkan metrik kueri](athena-cloudwatch-metrics-enable.md)
+ [Pantau metrik kueri dengan CloudWatch](query-metrics-viewing.md)
+ [Pantau metrik penggunaan dengan CloudWatch](monitoring-athena-usage-metrics.md)
+ [Pantau acara kueri dengan EventBridge](athena-events.md)
+ [Konfigurasikan kontrol penggunaan data](workgroups-setting-control-limits-cloudwatch.md)

# Aktifkan metrik CloudWatch kueri di Athena
<a name="athena-cloudwatch-metrics-enable"></a>

Saat Anda membuat grup kerja di konsol, pengaturan untuk memublikasikan metrik kueri ke dipilih CloudWatch secara default.

**Untuk mengaktifkan atau menonaktifkan metrik kueri di konsol Athena untuk grup kerja**

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

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.  
![\[Pilih menu ekspansi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/nav-pane-expansion.png)

1. Di panel navigasi, pilih **Workgroups**.

1. Pilih tautan grup kerja yang ingin Anda ubah.

1. Pada halaman detail untuk workgroup, pilih **Edit**.

1. Di bagian **Pengaturan**, pilih atau hapus **Publikasikan metrik kueri ke AWS CloudWatch**.

Jika Anda menggunakan operasi API, antarmuka baris perintah, atau aplikasi klien dengan driver JDBC untuk membuat grup kerja, untuk mengaktifkan penerbitan metrik kueri, disetel ke dalam. `PublishCloudWatchMetricsEnabled` `true` [WorkGroupConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroupConfiguration.html) Contoh berikut hanya menampilkan konfigurasi metrik dan menghilangkan konfigurasi lainnya:

```
"WorkGroupConfiguration": { 
      "PublishCloudWatchMetricsEnabled": "true"
     ....
     }
```

# Pantau metrik kueri Athena dengan CloudWatch
<a name="query-metrics-viewing"></a>

Athena menerbitkan metrik terkait kueri ke CloudWatch Amazon, saat metrik [kueri publikasi ke opsi dipilih](athena-cloudwatch-metrics-enable.md). CloudWatch Anda dapat membuat dasbor khusus, menyetel alarm, dan pemicu pada metrik CloudWatch, atau menggunakan dasbor yang telah diisi sebelumnya langsung dari konsol Athena. 

**Saat Anda mengaktifkan metrik kueri untuk kueri di grup kerja, metrik akan ditampilkan dalam tab Metrik di panel **Workgroups, untuk setiap grup kerja** di konsol Athena.**

Athena menerbitkan metrik berikut ke konsol: CloudWatch 
+ `DPUAllocated`— Jumlah total DPUs (unit pemrosesan data) yang disediakan dalam reservasi kapasitas untuk menjalankan kueri.
+ `DPUConsumed`— Jumlah yang dikonsumsi DPUs secara aktif oleh kueri di suatu `RUNNING` negara bagian pada waktu tertentu dalam reservasi. Metrik yang dipancarkan hanya jika kelompok kerja dikaitkan dengan reservasi kapasitas dan mencakup semua kelompok kerja yang terkait dengan reservasi. 
+ `DPUCount`— Jumlah maksimum yang DPUs dikonsumsi oleh kueri Anda, diterbitkan tepat sekali saat kueri selesai.
+ `EngineExecutionTime`— Jumlah milidetik yang dibutuhkan kueri untuk dijalankan.
+ `ProcessedBytes`— Jumlah byte yang dipindai Athena per kueri DML.
+ `QueryPlanningTime`— Jumlah milidetik yang Athena ambil untuk merencanakan alur pemrosesan kueri.
+ `QueryQueueTime`— Jumlah milidetik bahwa kueri berada dalam antrian kueri menunggu sumber daya.
+ `ServicePreProcessingTime`— Jumlah milidetik yang Athena ambil untuk memproses kueri sebelum mengirimkan kueri ke mesin kueri.
+ `ServiceProcessingTime`— Jumlah milidetik yang Athena ambil untuk memproses hasil kueri setelah mesin kueri selesai menjalankan kueri.
+ `TotalExecutionTime`— Jumlah milidetik yang Athena ambil untuk menjalankan kueri DDL atau DHTML. 

Untuk deskripsi yang lebih lengkap, lihat [Daftar CloudWatch metrik dan dimensi untuk Athena](#athena-cloudwatch-metrics-table) nanti dalam dokumen ini.

Metrik ini memiliki dimensi sebagai berikut:
+ `CapacityReservation`— Nama reservasi kapasitas yang digunakan untuk menjalankan kueri, jika berlaku.
+ `QueryState` – `SUCCEEDED`, `FAILED`, atau `CANCELED`
+ `QueryType` – `DML`, `DDL`, atau `UTILITY`
+ `WorkGroup`— nama kelompok kerja

Athena menerbitkan metrik berikut ke CloudWatch konsol di bawah namespace: `AmazonAthenaForApacheSpark`
+ `DPUCount`— jumlah yang DPUs dikonsumsi selama sesi untuk mengeksekusi perhitungan.

Metrik ini memiliki dimensi sebagai berikut:
+ `SessionId`— ID sesi di mana perhitungan diajukan.
+ `WorkGroup`— Nama kelompok kerja.

Untuk informasi lebih lanjut, lihat [Daftar CloudWatch metrik dan dimensi untuk Athena](#athena-cloudwatch-metrics-table) nanti dalam topik ini. Untuk informasi tentang metrik penggunaan Athena, lihat. [Pantau metrik penggunaan Athena dengan CloudWatch](monitoring-athena-usage-metrics.md)

Anda dapat melihat metrik kueri di konsol Athena atau di CloudWatch konsol.

## Lihat metrik kueri di konsol Athena
<a name="query-metrics-viewing-athena-console"></a>

**Untuk melihat metrik kueri untuk grup kerja di konsol Athena**

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

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.  
![\[Pilih menu ekspansi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/nav-pane-expansion.png)

1. Di panel navigasi, pilih **Workgroups**.

1. Pilih workgroup yang Anda inginkan dari daftar, lalu pilih tab **Metrik**. 

   Dasbor metrik ditampilkan.
**catatan**  
Jika Anda baru saja mengaktifkan metrik untuk grup kerja, belum and/or ada aktivitas kueri terbaru, grafik di dasbor mungkin kosong. Aktivitas kueri diambil dari CloudWatch tergantung pada interval yang Anda tentukan pada langkah berikutnya. 

1. Di bagian **Metrik**, pilih interval metrik yang harus digunakan Athena untuk mengambil metrik kueri CloudWatch, atau tentukan interval khusus.  
![\[Menentukan interval pengambilan metrik untuk grup kerja di konsol Athena.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/wg-custom-interval.png)

1. Untuk menyegarkan metrik yang ditampilkan, pilih ikon penyegaran.  
![\[Pilih ikon penyegaran.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/wg-refresh-metrics.png)

1. Klik panah di sebelah ikon penyegaran untuk memilih seberapa sering Anda ingin tampilan metrik diperbarui.  
![\[Memilih interval penyegaran untuk tampilan metrik workgroup di konsol Athena.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/wg-choose-refresh-interval.png)

## Lihat metrik kueri di konsol CloudWatch
<a name="query-metrics-viewing-cw-console"></a>

**Untuk melihat metrik di konsol Amazon CloudWatch**

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Pada panel navigasi, silakan pilih **Metrik**, **Semua metrik**.

1. Pilih namespace **AWS/Athena**.

## Lihat metrik kueri dengan AWS CLI
<a name="query-metrics-viewing-cli"></a>

**Untuk melihat metrik dengan AWS CLI**
+ Lakukan salah satu tindakan berikut:
  + Untuk membuat daftar metrik Athena, buka prompt perintah, dan gunakan perintah berikut:

    ```
    aws cloudwatch list-metrics --namespace "AWS/Athena"
    ```
  + Untuk mencantumkan semua metrik yang tersedia, gunakan perintah berikut:

    ```
    aws cloudwatch list-metrics"
    ```

## Daftar CloudWatch metrik dan dimensi untuk Athena
<a name="athena-cloudwatch-metrics-table"></a>

Jika Anda telah mengaktifkan CloudWatch metrik di Athena, metrik berikut akan dikirim ke per grup kerja CloudWatch . Metrik berikut menggunakan `AWS/Athena` namespace.


| Nama metrik | Deskripsi | 
| --- | --- | 
| DPUAllocated |  Jumlah total DPUs (unit pemrosesan data) yang disediakan dalam reservasi kapasitas untuk menjalankan kueri.   | 
| DPUConsumed | Jumlah yang dikonsumsi DPUs secara aktif oleh kueri di suatu RUNNING negara bagian pada waktu tertentu dalam reservasi. Metrik ini dipancarkan hanya jika kelompok kerja dikaitkan dengan reservasi kapasitas dan mencakup semua kelompok kerja yang terkait dengan reservasi. Jika Anda memindahkan grup kerja dari satu reservasi ke reservasi lainnya, metrik tersebut menyertakan data dari saat grup kerja tersebut termasuk dalam reservasi pertama. Untuk informasi lebih lanjut tentang reservasi kapasitas, lihat[Kelola kapasitas pemrosesan kueri](capacity-management.md). | 
| DPUCount | Jumlah maksimum yang DPUs dikonsumsi oleh kueri Anda, diterbitkan tepat sekali saat kueri selesai. Metrik ini dipancarkan hanya untuk kelompok kerja yang dilampirkan pada reservasi kapasitas. | 
| EngineExecutionTime |  Jumlah milidetik yang dibutuhkan kueri untuk dijalankan.  | 
| ProcessedBytes |  Jumlah byte yang dipindai Athena per kueri DML. Untuk kueri yang dibatalkan (baik oleh pengguna, atau secara otomatis, jika mereka mencapai batas), ini termasuk jumlah data yang dipindai sebelum waktu pembatalan. Metrik ini tidak dilaporkan untuk kueri DDL.  | 
| QueryPlanningTime | Jumlah milidetik yang Athena ambil untuk merencanakan alur pemrosesan kueri. Ini termasuk waktu yang dihabiskan untuk mengambil partisi tabel dari sumber data. Perhatikan bahwa karena mesin kueri melakukan perencanaan kueri, waktu perencanaan kueri adalah bagian dari. EngineExecutionTime | 
| QueryQueueTime | Jumlah milidetik kueri berada dalam antrian kueri menunggu sumber daya. Perhatikan bahwa jika terjadi kesalahan sementara, kueri dapat secara otomatis ditambahkan kembali ke antrian. | 
| ServicePreProcessingTime | Jumlah milidetik yang Athena ambil untuk memproses kueri sebelum mengirimkan kueri ke mesin kueri. | 
| ServiceProcessingTime | Jumlah milidetik yang Athena ambil untuk memproses hasil kueri setelah mesin kueri selesai menjalankan kueri. | 
| TotalExecutionTime | Jumlah milidetik yang Athena ambil untuk menjalankan kueri DDL atau DHTML. TotalExecutionTime termasuk QueryQueueTime, QueryPlanningTime, EngineExecutionTime, dan ServiceProcessingTime. | 

Metrik untuk Athena ini memiliki dimensi berikut.


| Dimensi | Deskripsi | 
| --- | --- | 
| CapacityReservation |  Nama reservasi kapasitas yang digunakan untuk mengeksekusi query, jika berlaku. Ketika reservasi kapasitas tidak digunakan, dimensi ini tidak mengembalikan data.  | 
| QueryState |  Status kueri. Statistik yang valid: BERHASIL, GAGAL, atau DIBATALKAN.  | 
| QueryType |  Jenis kueri. Statistik yang valid:`DDL`,`DML`, atau`UTILITY`. Jenis pernyataan query yang dijalankan. `DDL`menunjukkan pernyataan kueri DDL (Data Definition Language). `DML`menunjukkan pernyataan query DHTML (Data Manipulation Language), seperti`CREATE TABLE AS SELECT`. `UTILITY`menunjukkan pernyataan query selain DDL dan DHTML, seperti`SHOW CREATE TABLE`, atau. `DESCRIBE TABLE`  | 
| WorkGroup |  Nama workgroup.  | 

# Pantau metrik penggunaan Athena dengan CloudWatch
<a name="monitoring-athena-usage-metrics"></a>

Anda dapat menggunakan metrik CloudWatch penggunaan untuk memberikan visibilitas tentang cara akun Anda menggunakan sumber daya dengan menampilkan penggunaan layanan saat ini pada CloudWatch grafik dan dasbor.

Untuk Athena, metrik ketersediaan penggunaan sesuai dengan kuota untuk Layanan AWS Athena. Anda dapat mengonfigurasi alarm yang memberi tahu Anda saat penggunaan mendekati kuota layanan. Untuk informasi lebih lanjut tentang kuota layanan Athena, lihat. [Service Quotas](service-limits.md) Untuk informasi selengkapnya tentang metrik AWS penggunaan, lihat [metrik AWS penggunaan](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Service-Quota-Integration.html) di * CloudWatch Panduan Pengguna Amazon*.

Athena menerbitkan metrik berikut di namespace. `AWS/Usage`


|  Nama metrik  |  Deskripsi  | 
| --- | --- | 
|  `ResourceCount`  |  Jumlah semua kueri antrian dan eksekusi Wilayah AWS per akun, dipisahkan oleh jenis kueri (DML/DDL). Maksimum adalah satu-satunya statistik yang berguna untuk metrik ini. Metrik ini diterbitkan secara berkala setiap menit. Jika Anda tidak menjalankan kueri apa pun, metrik tidak melaporkan apa pun (bahkan 0). Metrik hanya diterbitkan jika kueri aktif berjalan pada saat metrik diambil.   | 

Dimensi berikut digunakan untuk menyempurnakan metrik penggunaan yang diterbitkan oleh Athena.


|  Dimensi  |  Deskripsi  | 
| --- | --- | 
|  `Service`  |  Nama yang Layanan AWS berisi sumber daya. Bagi Athena, nilai untuk dimensi ini adalah. `Athena`  | 
|  `Resource`  |  Tipe sumber daya yang sedang berjalan. Nilai sumber daya untuk penggunaan kueri Athena adalah. `ActiveQueryCount`  | 
|  `Type`  |  Jenis entitas yang dilaporkan. Saat ini, satu-satunya nilai yang valid untuk metrik penggunaan Athena adalah. `Resource`  | 
|  `Class`  |  Kelas sumber daya yang akan dilacak. Untuk Athena, `Class` bisa `DML` atau. `DDL`  | 

## Melihat metrik penggunaan sumber daya Athena di konsol CloudWatch
<a name="monitoring-athena-usage-metrics-cw-console"></a>

Anda dapat menggunakan CloudWatch konsol untuk melihat grafik metrik penggunaan Athena dan mengonfigurasi alarm yang mengingatkan Anda saat penggunaan mendekati kuota layanan.

**Untuk melihat metrik penggunaan sumber daya Athena**

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Pada panel navigasi, silakan pilih **Metrik**, **Semua metrik**.

1. Pilih **Usage**, lalu pilih **By AWS Resource**.

   Daftar metrik penggunaan kuota layanan muncul.

1. Pilih kotak centang yang ada di sebelah **Athena** dan. **ActiveQueryCount**

1. Pilih tab **Metrik bergrafik**.

   Grafik di atas menampilkan penggunaan AWS sumber daya Anda saat ini.

*Untuk informasi tentang menambahkan kuota layanan ke grafik dan menyetel alarm yang memberi tahu Anda jika Anda mendekati kuota layanan, lihat [Memvisualisasikan kuota layanan Anda dan menyetel alarm di](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Quotas-Visualize-Alarms.html) Panduan Pengguna Amazon. CloudWatch * Untuk informasi tentang menyetel batas penggunaan per grup kerja, lihat[Konfigurasikan kontrol penggunaan data per kueri dan per-kelompok kerja](workgroups-setting-control-limits-cloudwatch.md).

# Pantau acara kueri Athena dengan EventBridge
<a name="athena-events"></a>

Anda dapat menggunakan Amazon Athena dengan Amazon EventBridge untuk menerima pemberitahuan waktu nyata mengenai status pertanyaan Anda. Ketika kueri yang Anda kirimkan menyatakan transisi, Athena menerbitkan peristiwa EventBridge yang berisi informasi tentang transisi status kueri tersebut. Anda dapat menulis aturan sederhana untuk acara yang menarik bagi Anda dan mengambil tindakan otomatis saat acara cocok dengan aturan. Misalnya, Anda dapat membuat aturan yang memanggil AWS Lambda fungsi saat kueri mencapai status terminal. Peristiwa dipancarkan atas dasar upaya terbaik.

Sebelum Anda membuat aturan acara untuk Athena, Anda harus melakukan hal berikut:
+ Biasakan diri Anda dengan acara, aturan, dan target di EventBridge. Untuk informasi selengkapnya, lihat [Apa itu Amazon EventBridge?](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) Untuk informasi selengkapnya tentang cara mengatur aturan, lihat [Memulai Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html).
+ Buat target tersebut atau target untuk digunakan dalam aturan peristiwa Anda.

**catatan**  
Athena saat ini menawarkan satu jenis acara, Athena Query State Change, tetapi dapat menambahkan jenis dan detail acara lainnya. Jika Anda secara terprogram deserialisasi data peristiwa JSON, pastikan aplikasi Anda siap untuk menangani properti yang tidak dikenal jika properti tambahan ditambahkan.

## Format acara Athena
<a name="athena-events-pattern"></a>

Berikut ini adalah pola dasar untuk acara Amazon Athena.

```
{
    "source":[
        "aws.athena"
    ],
    "detail-type":[
        "Athena Query State Change"
    ],
    "detail":{
        "currentState":[
            "SUCCEEDED"
        ]
    }
}
```

## Acara perubahan status kueri Athena
<a name="athena-events-athena-query-state-change"></a>

Contoh berikut menunjukkan Athena Query State Change event dengan `currentState` nilai. `SUCCEEDED`

```
{
    "version":"0",
    "id":"abcdef00-1234-5678-9abc-def012345678",
    "detail-type":"Athena Query State Change",
    "source":"aws.athena",
    "account":"123456789012",
    "time":"2019-10-06T09:30:10Z",
    "region":"us-east-1",
    "resources":[

    ],
    "detail":{
        "versionId":"0",
        "currentState":"SUCCEEDED",
        "previousState":"RUNNING",
        "statementType":"DDL",
        "queryExecutionId":"01234567-0123-0123-0123-012345678901",
        "workgroupName":"primary",
        "sequenceNumber":"3"
    }
}
```

Contoh berikut menunjukkan Athena Query State Change event dengan `currentState` nilai. `FAILED` `athenaError`Blok hanya muncul ketika `currentState` ada`FAILED`. Untuk informasi tentang nilai untuk `errorCategory` dan`errorType`, lihat[Katalog kesalahan Athena](error-reference.md).

```
{
    "version":"0",
    "id":"abcdef00-1234-5678-9abc-def012345678",
    "detail-type":"Athena Query State Change",
    "source":"aws.athena",
    "account":"123456789012",
    "time":"2019-10-06T09:30:10Z",
    "region":"us-east-1",
    "resources":[ 
    ],
    "detail":{
        "athenaError": {
            "errorCategory": 2.0, //Value depends on nature of exception
            "errorType": 1306.0, //Type depends on nature of exception
            "errorMessage": "Amazon S3 bucket not found", //Message depends on nature of exception
            "retryable":false //Retryable value depends on nature of exception
        },
        "versionId":"0",
        "currentState": "FAILED",
        "previousState": "RUNNING",
        "statementType":"DML",
        "queryExecutionId":"01234567-0123-0123-0123-012345678901",
        "workgroupName":"primary",
        "sequenceNumber":"3"
    }
}
```

### Properti output
<a name="athena-events-query-state-change-output-properties"></a>

Output JSON mencakup properti berikut.


****  

| Properti | Deskripsi | 
| --- | --- | 
| athenaError | Muncul hanya ketika currentState ituFAILED. Berisi informasi tentang kesalahan yang terjadi, termasuk kategori kesalahan, jenis kesalahan, pesan kesalahan, dan apakah tindakan yang menyebabkan kesalahan dapat dicoba ulang. Nilai untuk masing-masing bidang ini tergantung pada sifat kesalahan. Untuk informasi tentang nilai untuk errorCategory danerrorType, lihat[Katalog kesalahan Athena](error-reference.md). | 
| versionId | Nomor versi untuk skema objek detail. | 
| currentState | Status bahwa query dialihkan ke pada saat acara. | 
| previousState | Keadaan bahwa kueri dialihkan dari pada saat acara. | 
| statementType | Jenis pernyataan query yang dijalankan. | 
| queryExecutionId | Pengidentifikasi unik untuk kueri yang dijalankan. | 
| workgroupName | Nama workgroup tempat kueri dijalankan. | 
| sequenceNumber | Jumlah yang meningkat secara monoton yang memungkinkan deduplikasi dan pengurutan peristiwa masuk yang melibatkan satu kueri yang dijalankan. Ketika peristiwa duplikat diterbitkan untuk transisi status yang sama, sequenceNumber nilainya sama. Saat kueri mengalami transisi status lebih dari sekali, seperti kueri yang mengalami requeuing langka, Anda dapat menggunakannya sequenceNumber untuk mengurutkan peristiwa dengan nilai dan identikcurrentState. previousState | 

## Contoh
<a name="athena-events-examples"></a>

Contoh berikut menerbitkan acara ke topik Amazon SNS yang telah Anda langgani. Ketika Athena ditanyai, Anda menerima email. Contohnya mengasumsikan bahwa topik Amazon SNS ada dan Anda telah berlangganan.

**Untuk mempublikasikan acara Athena ke topik Amazon SNS**

1. Buat target untuk topik Amazon SNS Anda. Berikan `events.amazonaws.com` izin Principal Layanan EventBridge acara untuk mempublikasikan ke topik Amazon SNS Anda, seperti pada contoh berikut.

   ```
   {
       "Effect":"Allow",
       "Principal":{
           "Service":"events.amazonaws.com"
       },
       "Action":"sns:Publish",
       "Resource":"arn:aws:sns:us-east-1:111111111111:your-sns-topic"
   }
   ```

1. Gunakan AWS CLI `events put-rule` perintah untuk membuat aturan untuk acara Athena, seperti pada contoh berikut.

   ```
   aws events put-rule --name {ruleName} --event-pattern '{"source": ["aws.athena"]}'
   ```

1. Gunakan AWS CLI `events put-targets` perintah untuk melampirkan target topik Amazon SNS ke aturan, seperti pada contoh berikut.

   ```
   aws events put-targets --rule {ruleName} --targets Id=1,Arn=arn:aws:sns:us-east-1:111111111111:your-sns-topic
   ```

1. Tanyakan Athena dan amati target yang dipanggil. Anda harus menerima email yang sesuai dari topik Amazon SNS.

## Gunakan Notifikasi Pengguna AWS dengan Amazon Athena
<a name="monitoring-user-notifications"></a>

Anda dapat menggunakan [Notifikasi Pengguna AWS](https://docs.aws.amazon.com/notifications/latest/userguide/what-is.html)untuk mengatur saluran pengiriman untuk mendapatkan pemberitahuan tentang acara Amazon Athena. Anda akan menerima notifikasi saat ada sebuah peristiwa yang cocok dengan sebuah aturan yang Anda tentukan. Anda dapat menerima pemberitahuan untuk acara melalui beberapa saluran, termasuk email, [Pengembang Amazon Q dalam pemberitahuan obrolan aplikasi](https://docs.aws.amazon.com/chatbot/latest/adminguide/what-is.html) obrolan, atau pemberitahuan [AWS Console Mobile Application](https://docs.aws.amazon.com/consolemobileapp/latest/userguide/what-is-consolemobileapp.html)push. Anda juga dapat melihat notifikasi di [Pusat Pemberitahuan Konsol](https://console.aws.amazon.com/notifications/). Notifikasi Pengguna mendukung agregasi, yang dapat mengurangi jumlah pemberitahuan yang Anda terima selama acara tertentu. 

Untuk informasi selengkapnya, silakan lihat [Panduan Pengguna *Notifikasi Pengguna AWS *](https://docs.aws.amazon.com/notifications/latest/userguide/what-is.html).

# Konfigurasikan kontrol penggunaan data per kueri dan per-kelompok kerja
<a name="workgroups-setting-control-limits-cloudwatch"></a>

 Athena memungkinkan Anda mengatur dua jenis kontrol biaya: batas per kueri dan batas per kelompok kerja. Untuk setiap kelompok kerja, Anda hanya dapat menetapkan satu batas per kueri dan beberapa batas per grup kerja.
+ **Batas kontrol per kueri** menentukan jumlah total data yang dipindai per kueri. Jika kueri apa pun yang berjalan di workgroup melebihi batas, kueri tersebut dibatalkan. Anda hanya dapat membuat satu batas kontrol per kueri dalam grup kerja dan itu berlaku untuk setiap kueri yang berjalan di dalamnya. Edit batas jika Anda perlu mengubahnya. Untuk langkah mendetail, lihat [Untuk membuat kontrol penggunaan data per kueri](#configure-control-limit-per-query).
+ **Batas kontrol penggunaan data seluruh kelompok kerja** menentukan jumlah total data yang dipindai untuk semua kueri yang berjalan di grup kerja ini selama periode waktu yang ditentukan. Anda dapat membuat beberapa batasan per workgroup. Batas kueri seluruh grup kerja memungkinkan Anda menetapkan beberapa ambang batas pada agregat per jam atau harian pada data yang dipindai oleh kueri yang berjalan di grup kerja. 

  Jika jumlah agregat data yang dipindai melebihi ambang batas, Anda dapat mendorong pemberitahuan ke topik Amazon SNS. Untuk melakukan ini, Anda mengonfigurasi alarm Amazon SNS dan tindakan di konsol Athena untuk memberi tahu administrator saat batas dilanggar. Untuk langkah mendetail, lihat [Untuk membuat kontrol penggunaan data per grup kerja](#configure-control-limit-per-workgroup). Anda juga dapat membuat alarm dan tindakan pada metrik apa pun yang diterbitkan Athena dari konsol. CloudWatch Misalnya, Anda dapat mengatur peringatan pada sejumlah kueri yang gagal. Peringatan ini dapat memicu email ke administrator jika nomor tersebut melewati ambang batas tertentu. Jika batas terlampaui, tindakan akan mengirimkan pemberitahuan alarm Amazon SNS ke pengguna yang ditentukan.

  Tindakan lain yang dapat Anda ambil:
  + Menginvokasi sebuah fungsi Lambda. Untuk informasi lebih lanjut, lihat [Memanggil fungsi Lambda menggunakan pemberitahuan Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-lambda-as-subscriber.html) dalam *Panduan Pengembang Amazon Simple Notification Service*.
  + Nonaktifkan workgroup untuk menghentikan kueri lebih lanjut agar tidak berjalan. Untuk langkah, lihat [Mengaktifkan atau menonaktifkan workgroup](workgroups-enabled-disabled.md).

Batas per-query dan per-workgroup tidak tergantung satu sama lain. Tindakan tertentu diambil setiap kali salah satu batas terlampaui. Jika dua atau lebih pengguna menjalankan kueri pada saat yang sama dalam kelompok kerja yang sama, ada kemungkinan bahwa setiap kueri tidak melebihi batas yang ditentukan, tetapi jumlah total data yang dipindai melebihi batas penggunaan data per grup kerja. Dalam hal ini, alarm Amazon SNS dikirim ke pengguna. 

## Buat kontrol penggunaan data per kueri
<a name="create-a-per-query-data-usage-control"></a><a name="configure-control-limit-per-query"></a>

**Untuk membuat kontrol penggunaan data per kueri**

Batas kontrol per kueri menentukan jumlah total data yang dipindai per kueri. Jika kueri apa pun yang berjalan di workgroup melebihi batas, kueri tersebut dibatalkan. Kueri yang dibatalkan dibebankan sesuai dengan [harga Amazon Athena](https://aws.amazon.com/athena/pricing/).
**catatan**  
Dalam kasus kueri yang dibatalkan atau gagal, Athena mungkin telah menulis sebagian hasil ke Amazon S3. Dalam kasus seperti itu, Athena tidak menghapus sebagian hasil dari awalan Amazon S3 tempat hasil disimpan. Anda harus menghapus awalan Amazon S3 dengan hasil sebagian. Athena menggunakan unggahan multipart Amazon S3 untuk menulis data Amazon S3. Kami menyarankan Anda menyetel kebijakan siklus hidup bucket untuk mengakhiri unggahan multibagian jika kueri gagal. Untuk informasi selengkapnya, lihat [Membatalkan unggahan multibagian yang tidak lengkap menggunakan kebijakan siklus hidup bucket di](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config) Panduan Pengguna Layanan Penyimpanan *Sederhana Amazon*. 
Dalam kondisi tertentu, Athena dapat secara otomatis mencoba kembali eksekusi kueri. Dalam kebanyakan kasus, kueri ini dapat diselesaikan dengan sukses dan ID kueri ditandai sebagai`Completed`. Kueri ini mungkin telah menulis sebagian hasil selama upaya awal dan dapat menghasilkan unggahan multibagian yang tidak lengkap.

Anda hanya dapat membuat satu batas kontrol per kueri dalam grup kerja dan itu berlaku untuk setiap kueri yang berjalan di dalamnya. Edit batas jika Anda perlu mengubahnya. 

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

1. Di panel navigasi, pilih **Workgroups**.

1. Pilih nama workgroup dari daftar.

1. Pada tab **Kontrol eksekusi**, pilih **Edit kontrol**.

1. Edit nilai untuk **batas data yang dipindai**.
   + Tentukan nilai antara 10 MB (minimum) dan 7 EB (maksimum).
   + Pilih nilai satuan dari daftar drop-down (misalnya, **Kilobytes KB atau **Exabytes**** EB).
**catatan**  
Tindakan default adalah membatalkan kueri jika melebihi batas. Pengaturan ini tidak dapat diubah.

1. Pilih **Simpan** untuk segera menerapkan perubahan Anda.

## Membuat atau mengedit peringatan penggunaan data per grup kerja
<a name="create-a-per-workgroup-data-usage-alert"></a><a name="configure-control-limit-per-workgroup"></a>

**Untuk membuat atau mengedit peringatan penggunaan data per grup kerja**

Anda dapat mengatur beberapa ambang peringatan saat kueri yang berjalan di grup kerja memindai jumlah data tertentu dalam periode tertentu. Peringatan diimplementasikan menggunakan CloudWatch alarm Amazon dan berlaku untuk semua kueri di workgroup. Ketika ambang batas tercapai, Anda dapat meminta Amazon SNS mengirim email ke pengguna yang Anda tentukan. Kueri tidak dibatalkan secara otomatis ketika ambang batas tercapai.

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

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.

1. Di panel navigasi, pilih **Workgroups**.

1. Pilih nama workgroup dari daftar.

1. Pilih **Edit** untuk mengedit pengaturan grup kerja.

1. Gulir ke bawah dan perluas **peringatan penggunaan data Workgroup - opsional**.

1. Pilih **Tambahkan peringatan**.

1. Untuk **konfigurasi ambang penggunaan Data**, tentukan nilai sebagai berikut:
   + Untuk **Ambang data**, tentukan angka, lalu pilih nilai satuan dari daftar drop-down.
   + **Untuk jangka waktu**, pilih periode waktu dari daftar drop-down.
   + Untuk **pemilihan topik SNS**, pilih topik Amazon SNS dari daftar drop-down. Atau, pilih **Buat topik SNS** untuk langsung masuk ke konsol [Amazon SNS](https://console.aws.amazon.com/sns/v2/home), buat topik Amazon SNS, dan siapkan langganan untuk salah satu pengguna di akun Athena Anda. Untuk informasi lebih lanjut, lihat [Memulai dengan Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html) di *Panduan Developer Amazon Simple Notification Service*. 

1. Pilih **Tambahkan peringatan** jika Anda membuat peringatan baru, atau **Simpan** untuk menyimpan peringatan yang ada.

# Gunakan workgroup Athena APIs
<a name="workgroups-api-list"></a>

Berikut ini adalah beberapa operasi REST API yang digunakan untuk workgroup Athena. Dalam semua operasi berikut kecuali untuk`ListWorkGroups`, Anda harus menentukan workgroup. Dalam operasi lain, seperti`StartQueryExecution`, parameter workgroup adalah opsional dan operasi tidak tercantum di sini. Untuk daftar lengkap operasi, lihat Referensi [API Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/).
+  [CreateWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_CreateWorkGroup.html) 
+  [DeleteWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_DeleteWorkGroup.html) 
+  [GetWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetWorkGroup.html) 
+  [ListWorkGroups](https://docs.aws.amazon.com/athena/latest/APIReference/API_ListWorkGroups.html) 
+  [UpdateWorkGroup](https://docs.aws.amazon.com/athena/latest/APIReference/API_UpdateWorkGroup.html) 



# Memecahkan masalah kesalahan kelompok kerja
<a name="workgroups-troubleshooting"></a>

Gunakan tips berikut untuk memecahkan masalah kelompok kerja.
+ Periksa izin untuk pengguna individu di akun Anda. Mereka harus memiliki akses ke lokasi untuk hasil kueri, dan ke workgroup tempat mereka ingin menjalankan kueri. Jika mereka ingin beralih kelompok kerja, mereka juga memerlukan izin untuk kedua kelompok kerja. Untuk informasi, lihat [Menggunakan kebijakan IAM untuk mengontrol akses workgroup](workgroups-iam-policy.md).
+ Perhatikan konteks di konsol Athena, untuk melihat di workgroup mana Anda akan menjalankan kueri. Jika Anda menggunakan driver, pastikan untuk mengatur workgroup ke yang Anda butuhkan. Untuk informasi, lihat [Tentukan workgroup untuk kueri](specify-wkgroup-to-athena-in-which-to-run-queries.md).
+ Jika Anda menggunakan API atau driver untuk menjalankan kueri, Anda harus menentukan lokasi hasil kueri menggunakan salah satu cara berikut: untuk kueri individual, gunakan [OutputLocation](https://docs.aws.amazon.com/athena/latest/APIReference/API_ResultConfiguration.html#athena-Type-ResultConfiguration-OutputLocation)(sisi klien). Di workgroup, gunakan [WorkGroupConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroupConfiguration.html). Jika lokasi tidak ditentukan dengan cara apa pun, Athena mengeluarkan kesalahan saat runtime kueri.
+ Jika Anda mengganti setelan sisi klien dengan pengaturan grup kerja, Anda mungkin mengalami kesalahan dengan lokasi hasil kueri. Misalnya, pengguna workgroup mungkin tidak memiliki izin ke lokasi workgroup di Amazon S3 untuk menyimpan hasil kueri. Dalam hal ini, tambahkan izin yang diperlukan.
+ Workgroup memperkenalkan perubahan perilaku operasi API. Panggilan ke operasi API yang ada berikut mengharuskan pengguna di akun Anda memiliki izin berbasis sumber daya di IAM ke grup kerja tempat mereka membuatnya. Jika tidak ada izin untuk kelompok kerja dan tindakan kelompok kerja, tindakan API berikut akan menampilkan`AccessDeniedException`: **CreateNamedQuery**,,,, **DeleteNamedQuery**, **GetNamedQuery**ListNamedQueries****, **StartQueryExecution**, **StopQueryExecution**ListQueryExecutions**GetQueryExecution**GetQueryResults********, dan **GetQueryResultsStream**(tindakan API ini hanya tersedia untuk digunakan dengan driver dan tidak diekspos sebaliknya untuk penggunaan publik). Untuk informasi selengkapnya, lihat [Kunci tindakan, sumber daya, dan kondisi untuk Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html) di Referensi *Otorisasi Layanan*.

  Panggilan ke operasi **BatchGetQueryExecution**dan **BatchGetNamedQuery**API hanya mengembalikan informasi tentang kueri yang berjalan di grup kerja yang dapat diakses pengguna. Jika pengguna tidak memiliki akses ke workgroup, operasi API ini mengembalikan kueri yang tidak sah IDs sebagai bagian dari daftar yang belum IDs diproses. Untuk informasi selengkapnya, lihat [Gunakan workgroup Athena APIs](workgroups-api-list.md).
+ Jika workgroup tempat kueri akan dijalankan dikonfigurasi dengan [lokasi hasil kueri yang dipaksakan](workgroups-settings-override.md), jangan tentukan `external_location` untuk kueri CTAS. Athena mengeluarkan kesalahan dan gagal kueri yang menentukan `external_location` dalam kasus ini. Misalnya, kueri ini gagal, jika Anda mengganti setelan sisi klien untuk lokasi hasil kueri, memaksa grup kerja untuk menggunakan lokasinya sendiri: `CREATE TABLE <DB>.<TABLE1> WITH (format='Parquet', external_location='s3://amzn-s3-demo-bucket/test/') AS SELECT * FROM <DB>.<TABLE2> LIMIT 10;`

Anda mungkin melihat kesalahan berikut. Tabel ini menyediakan daftar beberapa kesalahan yang terkait dengan kelompok kerja dan menyarankan solusi.


**Kesalahan kelompok kerja**  

| Kesalahan | Terjadi ketika... | 
| --- | --- | 
|  status kueri DIBATALKAN. Batas pemindaian byte terlampaui.  | Kueri mencapai batas data per kueri dan dibatalkan. Pertimbangkan untuk menulis ulang kueri sehingga membaca lebih sedikit data, atau hubungi administrator akun Anda. | 
|  Pengguna: arn:aws:iam::123456789012:user/abc tidak berwenang untuk melakukan: athena: StartQueryExecution pada sumber daya: arn:aws:athena:us-east-1:123456789012:workgroup/workgroupname  | Seorang pengguna menjalankan kueri dalam workgroup, tetapi tidak memiliki akses ke sana. Perbarui kebijakan Anda agar memiliki akses ke grup kerja.  | 
|  INVALID\$1INPUT.  WorkGroup <name>dinonaktifkan.  | Pengguna menjalankan kueri di workgroup, tetapi workgroup dinonaktifkan. Workgroup Anda dapat dinonaktifkan oleh administrator Anda. Mungkin juga Anda tidak memiliki akses ke sana. Dalam kedua kasus tersebut, hubungi administrator yang memiliki akses untuk memodifikasi grup kerja. | 
|  INVALID\$1INPUT.  WorkGroup <name>tidak ditemukan.  | Pengguna menjalankan kueri di workgroup, tetapi workgroup tidak ada. Ini bisa terjadi jika workgroup dihapus. Beralih ke workgroup lain untuk menjalankan kueri Anda. | 
|  InvalidRequestException: saat memanggil StartQueryExecution operasi: Tidak ada lokasi output yang disediakan. Lokasi keluaran diperlukan baik melalui pengaturan konfigurasi hasil Workgroup atau sebagai input API.  |  Pengguna menjalankan kueri dengan API tanpa menentukan lokasi untuk hasil kueri. Anda harus mengatur lokasi keluaran untuk hasil kueri menggunakan salah satu dari dua cara: baik untuk kueri individual, menggunakan [OutputLocation](https://docs.aws.amazon.com/athena/latest/APIReference/API_ResultConfiguration.html#athena-Type-ResultConfiguration-OutputLocation)(sisi klien), atau dalam kelompok kerja, menggunakan. [WorkGroupConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_WorkGroupConfiguration.html)  | 
|   Kueri Create Table As Select gagal karena dikirimkan dengan properti 'external\$1location' ke Athena Workgroup yang memberlakukan lokasi keluaran terpusat untuk semua kueri. Harap hapus properti 'external\$1location' dan kirimkan kembali kueri.   | Jika workgroup tempat kueri berjalan dikonfigurasi dengan [lokasi hasil kueri yang diberlakukan](workgroups-settings-override.md), dan Anda menentukan external\$1location untuk kueri CTAS. Dalam hal ini, hapus external\$1location dan jalankan kembali kueri. | 
| Tidak dapat membuat pernyataan yang disiapkanprepared\$1statement\$1name. Jumlah pernyataan yang disiapkan dalam kelompok kerja ini melebihi batas 1000. | Workgroup berisi lebih dari batas 1000 pernyataan yang disiapkan. Untuk mengatasi masalah ini, gunakan [DEALLOCATE PREPARE](sql-deallocate-prepare.md) untuk menghapus satu atau beberapa pernyataan yang disiapkan dari workgroup. Atau, buat workgroup baru. | 

# Kelola kapasitas pemrosesan kueri
<a name="capacity-management"></a>

Anda dapat menggunakan reservasi kapasitas untuk mendapatkan kapasitas pemrosesan tanpa server khusus untuk kueri yang Anda jalankan di Athena. Dengan reservasi kapasitas, Anda dapat memanfaatkan kemampuan manajemen beban kerja yang membantu Anda memprioritaskan, mengontrol, dan mengukur beban kerja Anda yang paling penting. Misalnya, Anda dapat menambahkan kapasitas untuk mengontrol jumlah kueri yang dapat dijalankan secara bersamaan, memilih beban kerja mana yang dapat menggunakan kapasitas, dan berbagi kapasitas di antara beban kerja. Kapasitas tanpa server dan dikelola sepenuhnya oleh Athena dan disimpan untuk Anda selama Anda membutuhkannya. Penyiapannya mudah dan tidak ada perubahan pada kueri SQL Anda yang diperlukan.

Untuk mendapatkan kapasitas pemrosesan untuk kueri Anda, Anda membuat reservasi kapasitas, menentukan jumlah Unit Pemrosesan Data (DPUs) yang Anda perlukan, dan tetapkan satu atau beberapa grup kerja ke reservasi.

Kelompok kerja memainkan peran penting ketika Anda menggunakan reservasi kapasitas. Workgroup memungkinkan Anda untuk mengatur kueri ke dalam pengelompokan logis atau kasus penggunaan. Dengan reservasi kapasitas, Anda secara selektif menetapkan kapasitas ke grup kerja sehingga Anda mengontrol perilaku kueri untuk setiap kelompok kerja dan bagaimana mereka ditagih. Untuk informasi selengkapnya tentang kelompok kerja, lihat[Gunakan kelompok kerja untuk mengontrol akses kueri dan biaya](workgroups-manage-queries-control-costs.md).

Menetapkan kelompok kerja ke reservasi kapasitas memungkinkan Anda memprioritaskan kueri ini karena mereka berjalan pada kapasitas cadangan Anda dan tidak diperhitungkan dalam kuota kueri DDL dan DML Anda. Misalnya, Anda dapat mengalokasikan kapasitas ke grup kerja yang digunakan untuk kueri pelaporan keuangan yang sensitif terhadap waktu untuk mengisolasi kueri tersebut dari kueri yang kurang kritis di grup kerja lain. Ini memberi Anda eksekusi kueri yang dapat diprediksi untuk beban kerja kritis sambil memungkinkan beban kerja lain berjalan secara independen.

Anda dapat menggunakan reservasi kapasitas dan kelompok kerja bersama-sama untuk memenuhi persyaratan yang berbeda. Berikut ini adalah beberapa contoh skenario:
+ **Mengisolasi pertanyaan penting** — Untuk memastikan bahwa beban kerja penting memiliki kapasitas yang dibutuhkan saat Anda membutuhkannya, buat reservasi kapasitas dan tetapkan kelompok kerjanya ke reservasi. Hanya kueri dari grup kerja yang ditetapkan yang menggunakan kapasitas pemrosesan dari reservasi Anda. Misalnya, untuk memastikan eksekusi kueri yang andal yang mendukung aplikasi produksi, tetapkan grup kerja produksi untuk kueri tersebut ke reservasi kapasitas. Saat mengembangkan kueri, gunakan workgroup terpisah yang tidak terkait dengan reservasi dan pindahkan kueri ke workgroup produksi saat siap.
+ **Bagikan kapasitas di seluruh beban kerja serupa** — Beberapa beban kerja dapat berbagi kapasitas dari satu reservasi. Ini memungkinkan Anda untuk mencapai biaya yang dapat diprediksi untuk beban kerja ini dan mengontrol konkurensi mereka. Misalnya, jika Anda memiliki beban kerja terjadwal yang toleran terhadap waktu mulai eksekusi kueri yang tertunda, Anda dapat menetapkan grup kerja mereka ke satu reservasi. Ini membebaskan kuota kueri DDL dan DMLmu untuk kueri interaktif yang berjalan di akun yang sama, memastikan kueri ini dimulai dengan penundaan minimal.

## Memahami DPUs
<a name="capacity-management-understanding-dpus"></a>

Kapasitas diukur dalam Unit Pengolahan Data (DPUs). DPUs mewakili sumber daya komputasi dan memori tanpa server yang digunakan oleh Athena untuk mengakses dan memproses data atas nama Anda. Satu DPU biasanya menyediakan 4 v CPUs dan 16 GB memori. Jumlah DPUs yang Anda pegang memengaruhi jumlah kueri yang dapat Anda jalankan secara bersamaan. Misalnya, reservasi dengan 256 DPUs dapat mendukung kira-kira dua kali jumlah kueri bersamaan daripada reservasi dengan 128. DPUs

Untuk informasi tentang memperkirakan kebutuhan kapasitas Anda, lihat[Tentukan persyaratan kapasitas](capacity-management-requirements.md). Untuk informasi harga, lihat harga [Amazon Athena](https://aws.amazon.com/athena/pricing/).

## Pertimbangan dan batasan
<a name="capacity-management-considerations-limitations"></a>
+ Anda dapat menggunakan reservasi kapasitas dan penagihan per kueri, berdasarkan data yang dipindai, pada saat yang sama di akun yang sama.
+ Kueri yang dijalankan pada reservasi kapasitas tidak diperhitungkan dalam kuota kueri DDL dan DMLmu.
+ Jika kapasitas Anda sibuk melayani pertanyaan lain, kueri yang baru dikirimkan akan diantrian hingga kapasitas tersedia. Waktu maksimum yang diizinkan dalam antrian adalah 10 jam.
+ Workgroup dapat ditugaskan ke satu reservasi kapasitas pada satu waktu. Anda dapat menetapkan total 20 kelompok kerja untuk satu reservasi. Saat Anda menetapkan beberapa grup kerja ke reservasi, kapasitas akan dibagikan di seluruh grup kerja dan dialokasikan ke kueri berdasarkan urutan kiriman mereka. Mungkin ada variasi dalam urutan eksekusi karena bagaimana Athena secara dinamis mengalokasikan kapasitas untuk kueri.
+ Athena secara otomatis mengalokasikan antara 4 dan 124 DPUs untuk kueri DMLberdasarkan kompleksitasnya. Kueri DDL mengkonsumsi 4 DPUs masing-masing. Lihat topik berikut untuk informasi lebih lanjut:
  + [Tentukan persyaratan kapasitas](capacity-management-requirements.md)
  + [Kontrol penggunaan kapasitas](capacity-management-control-capacity-usage.md)
+ Jumlah minimum yang DPUs diperlukan untuk setiap reservasi kapasitas adalah 4. Untuk informasi harga, lihat harga [Amazon Athena](https://aws.amazon.com/athena/pricing/).
+ Anda dapat membuat hingga 100 kapasitas reservasi dengan total hingga 1.000 DPUs per akun dan wilayah. Jika Anda membutuhkan lebih dari 1.000 DPUs untuk kasus penggunaan Anda, silakan hubungi [athena-feedback@amazon.com](mailto:athena-feedback@amazon.com?subject=Athena Provisioned Capacity DPU Limit Request).
+ Permintaan kapasitas tidak dijamin dan dapat memakan waktu hingga 30 menit untuk diselesaikan. Kapasitas tidak dapat dipindahtangankan ke reservasi kapasitas lain, Akun AWS, atau Wilayah AWS.
+ `DPUConsumed` CloudWatch Metriknya adalah per-workgroup, bukan per-reservasi. Jadi, jika Anda memindahkan grup kerja dari satu reservasi ke reservasi lainnya, `DPUConsumed` metrik tersebut menyertakan data dari saat grup kerja tersebut termasuk dalam reservasi pertama. Untuk informasi selengkapnya tentang penggunaan CloudWatch metrik di Athena, lihat. [Pantau metrik kueri Athena dengan CloudWatch](query-metrics-viewing.md)
+ Untuk menghapus grup kerja yang telah ditetapkan ke reservasi, hapus grup kerja dari reservasi terlebih dahulu.
+ Workgroup yang dikonfigurasi untuk menggunakan Apache Spark tidak didukung.
+ Reservasi kapasitas tidak tersedia dalam iklan Wilayah AWS berikut:
  + Israel (Tel Aviv)
  + Timur Tengah (UAE)
  + Timur Tengah (Bahrain)
  + Asia Pasifik (Selandia Baru)

**Topics**
+ [Memahami DPUs](#capacity-management-understanding-dpus)
+ [Pertimbangan dan batasan](#capacity-management-considerations-limitations)
+ [Tentukan persyaratan kapasitas](capacity-management-requirements.md)
+ [Buat reservasi kapasitas](capacity-management-creating-capacity-reservations.md)
+ [Kontrol penggunaan kapasitas](capacity-management-control-capacity-usage.md)
+ [Secara otomatis menyesuaikan kapasitas](capacity-management-automatically-adjust-capacity.md)
+ [Kelola reservasi](capacity-management-managing-reservations.md)
+ [Kebijakan IAM untuk reservasi kapasitas](capacity-reservations-iam-policy.md)
+ [Pemesanan kapasitas Athena APIs](capacity-management-api-list.md)

# Tentukan persyaratan kapasitas
<a name="capacity-management-requirements"></a>

Sebelum Anda membuat reservasi kapasitas, Anda dapat memperkirakan kapasitas yang diperlukan sehingga Anda dapat menetapkan jumlah DPUs yang benar. Dan, setelah reservasi digunakan, Anda mungkin ingin memeriksa reservasi untuk kapasitas yang tidak mencukupi atau kelebihan. Topik ini menjelaskan teknik yang dapat Anda gunakan untuk membuat perkiraan ini dan juga menjelaskan beberapa AWS alat untuk menilai penggunaan dan biaya.

**Topics**
+ [Perkirakan kapasitas yang dibutuhkan](#capacity-management-requirements-estimating)
+ [Tanda-tanda bahwa lebih banyak kapasitas diperlukan](#capacity-management-requirements-insufficient-capacity)
+ [Periksa kapasitas idle](#capacity-management-requirements-idle-capacity)
+ [Memantau konsumsi DPU](#capacity-management-requirements-monitoring-dpu-consumption)

## Perkirakan kapasitas yang dibutuhkan
<a name="capacity-management-requirements-estimating"></a>

Saat memperkirakan persyaratan kapasitas, penting untuk mempertimbangkan dua perspektif: berapa banyak kapasitas yang mungkin dibutuhkan permintaan tertentu, dan berapa banyak kapasitas yang mungkin Anda butuhkan secara umum.

### Perkirakan persyaratan kapasitas per kueri
<a name="capacity-management-requirements-estimating-query"></a>

Untuk menentukan jumlah kueri DPUs yang mungkin diperlukan, Anda dapat menggunakan panduan berikut:
+ Kueri DDL mengkonsumsi 4. DPUs
+ Kueri DHTML mengkonsumsi antara 4 dan 124. DPUs

Athena menentukan jumlah yang DPUs dibutuhkan oleh kueri DML saat kueri dikirimkan. Jumlahnya bervariasi berdasarkan ukuran data, format penyimpanan, konstruksi kueri, dan faktor lainnya. Umumnya, Athena mencoba memilih nomor DPU terendah dan paling efisien. Jika Athena menentukan bahwa lebih banyak daya komputasi diperlukan agar kueri berhasil diselesaikan, itu meningkatkan jumlah yang DPUs ditugaskan ke kueri.

### Perkirakan kebutuhan kapasitas spesifik beban kerja
<a name="capacity-management-requirements-estimating-workload"></a>

Untuk menentukan berapa banyak kapasitas yang mungkin Anda perlukan untuk menjalankan beberapa kueri secara bersamaan, pertimbangkan pedoman umum dalam tabel berikut:


****  

| Kueri bersamaan | DPUs diperlukan | 
| --- | --- | 
| 10 | 40 atau lebih | 
| 20 | 96 atau lebih | 
| 30 atau lebih | 240 atau lebih | 

Perhatikan bahwa jumlah aktual DPUs yang Anda butuhkan tergantung pada tujuan dan pola analisis Anda. Misalnya, jika Anda ingin kueri segera dimulai tanpa antrian, tentukan permintaan kueri bersamaan puncak Anda, lalu berikan jumlah yang sesuai. DPUs 

Anda dapat menyediakan DPUs lebih sedikit dari permintaan puncak Anda, tetapi antrian dapat terjadi ketika permintaan puncak terjadi. Saat antrian terjadi, Athena menyimpan kueri Anda dalam antrian dan menjalankannya saat kapasitas tersedia.

Jika tujuan Anda adalah menjalankan kueri dalam anggaran tetap, Anda dapat menggunakan [Kalkulator AWS Harga](https://calculator.aws/#/addService/Athena) untuk menentukan jumlah DPUs yang sesuai dengan anggaran Anda.

Terakhir, ingat bahwa ukuran data, format penyimpanan, dan bagaimana kueri ditulis memengaruhi permintaan DPUs yang dibutuhkan. Untuk meningkatkan kinerja kueri, Anda dapat mengompres atau mempartisi data Anda atau mengubahnya menjadi format kolom. Untuk informasi selengkapnya, lihat [Optimalkan kinerja Athena](performance-tuning.md).

## Tanda-tanda bahwa lebih banyak kapasitas diperlukan
<a name="capacity-management-requirements-insufficient-capacity"></a>

Pesan kesalahan kapasitas yang tidak mencukupi dan antrian kueri adalah dua indikasi bahwa kapasitas yang Anda tetapkan tidak memadai.

Jika kueri Anda gagal dengan pesan kesalahan kapasitas yang tidak mencukupi, jumlah DPU reservasi kapasitas Anda terlalu rendah untuk kueri Anda. Misalnya, jika Anda memiliki reservasi dengan 24 DPUs dan menjalankan kueri yang membutuhkan lebih dari 24 DPUs, kueri akan gagal. Untuk memantau kesalahan kueri ini, Anda dapat menggunakan [EventBridge acara](athena-events.md) Athena. Coba tambahkan lebih banyak DPUs dan jalankan kembali kueri Anda.

Jika banyak pertanyaan antri, itu berarti kapasitas Anda sepenuhnya dimanfaatkan oleh pertanyaan lain. Untuk mengurangi antrian, lakukan salah satu hal berikut:
+ Tambahkan DPUs ke reservasi Anda untuk meningkatkan konkurensi kueri.
+ Hapus grup kerja dari reservasi Anda untuk membebaskan kapasitas kueri lainnya.

Untuk memeriksa antrian kueri yang berlebihan, gunakan [CloudWatchmetrik](query-metrics-viewing.md) waktu antrian kueri Athena untuk grup kerja dalam reservasi kapasitas Anda. Jika nilainya di atas ambang batas pilihan Anda, Anda dapat DPUs menambah reservasi kapasitas.

## Periksa kapasitas idle
<a name="capacity-management-requirements-idle-capacity"></a>

Untuk memeriksa kapasitas idle, Anda dapat mengurangi jumlah reservasi atau menambah beban kerjanya, dan kemudian mengamati hasilnya. DPUs 

**Untuk memeriksa kapasitas idle**

1. Lakukan salah satu tindakan berikut:
   + Kurangi jumlah DPUs reservasi Anda (kurangi sumber daya yang tersedia)
   + Tambahkan grup kerja ke reservasi Anda (tambah beban kerja)

1. Gunakan [CloudWatch](query-metrics-viewing.md)untuk mengukur waktu antrian kueri.

1. Jika waktu antrian meningkat melampaui level yang diinginkan, lakukan salah satu hal berikut
   + Hapus kelompok kerja
   + Tambahkan DPUs ke reservasi kapasitas Anda

1. Setelah setiap perubahan, periksa kinerja dan waktu antrian kueri.

1. Terus sesuaikan jumlah and/or DPU beban kerja untuk mencapai keseimbangan yang diinginkan.

Jika Anda tidak ingin mempertahankan kapasitas di luar jangka waktu yang diinginkan, Anda dapat [membatalkan](capacity-management-cancelling-a-capacity-reservation.md) reservasi dan membuat reservasi lain nanti. Namun, meskipun Anda baru saja membatalkan kapasitas dari reservasi lain, permintaan untuk kapasitas baru tidak dijamin, dan reservasi baru membutuhkan waktu untuk dibuat.

## Memantau konsumsi DPU
<a name="capacity-management-requirements-monitoring-dpu-consumption"></a>

Setelah kueri berjalan, Anda dapat melihat DPU yang digunakan oleh kueri untuk membantu menyempurnakan perkiraan kapasitas Anda. Athena menyediakan metrik konsumsi DPU melalui konsol, operasi API, dan. CloudWatch Informasi ini membantu Anda mengidentifikasi kueri yang menghabiskan lebih banyak atau lebih sedikit sumber daya dari yang diharapkan dan mengoptimalkan alokasi kapasitas Anda berdasarkan data dunia nyata. Untuk informasi rinci tentang melihat dan melacak konsumsi DPU, lihat[Pantau penggunaan DPU](capacity-management-control-capacity-usage.md#capacity-management-monitor-dpu-usage).

## Alat untuk menilai kebutuhan kapasitas dan biaya
<a name="capacity-management-requirements-tools"></a>

Anda dapat menggunakan layanan dan fitur berikut AWS untuk mengukur penggunaan dan biaya Athena Anda.

### CloudWatch metrik
<a name="capacity-management-requirements-tools-cloudwatch-metrics"></a>

Anda dapat mengonfigurasi Athena untuk memublikasikan metrik terkait kueri ke Amazon CloudWatch di tingkat workgroup. Setelah Anda mengaktifkan metrik untuk grup kerja, metrik untuk kueri grup kerja akan ditampilkan di konsol Athena di halaman detail grup kerja.

Untuk informasi tentang metrik Athena yang dipublikasikan CloudWatch dan dimensinya, lihat. [Pantau metrik kueri Athena dengan CloudWatch](query-metrics-viewing.md)

### CloudWatch metrik penggunaan
<a name="capacity-management-requirements-tools-cloudwatch-usage-metrics"></a>

Anda dapat menggunakan metrik CloudWatch penggunaan untuk memberikan visibilitas tentang cara akun Anda menggunakan sumber daya dengan menampilkan penggunaan layanan saat ini pada CloudWatch grafik dan dasbor. Untuk Athena, metrik ketersediaan penggunaan sesuai dengan kuota AWS [layanan](service-limits.md) untuk Athena. Anda dapat mengonfigurasi alarm yang memberi tahu Anda saat penggunaan mendekati kuota layanan.

Untuk informasi selengkapnya, lihat [Pantau metrik penggunaan Athena dengan CloudWatch](monitoring-athena-usage-metrics.md).

### EventBridge Acara Amazon
<a name="capacity-management-requirements-tools-eventbridge-events"></a>

Anda dapat menggunakan Amazon Athena dengan Amazon EventBridge untuk menerima pemberitahuan waktu nyata mengenai status pertanyaan Anda. Ketika kueri yang Anda kirimkan berubah menyatakan, Athena menerbitkan peristiwa EventBridge yang berisi informasi tentang transisi status kueri. Anda dapat menulis aturan sederhana untuk acara yang menarik bagi Anda dan mengambil tindakan otomatis saat acara cocok dengan aturan.

Untuk informasi selengkapnya, lihat sumber daya berikut ini.
+ [Pantau acara kueri Athena dengan EventBridge](athena-events.md)
+ [Apa itu Amazon EventBridge?](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)
+ [ EventBridgeAcara Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html) 

### Tag
<a name="capacity-management-requirements-tools-tags"></a>

Di Athena, reservasi kapasitas mendukung tag. Tag terdiri dari kunci dan nilai. Untuk melacak biaya Anda di Athena, Anda dapat menggunakan tag alokasi biaya AWS yang dihasilkan. AWS menggunakan tag alokasi biaya untuk mengatur biaya sumber daya Anda pada [Laporan Biaya dan Penggunaan](https://docs.aws.amazon.com/cur/latest/userguide/what-is-cur.html) Anda. Ini memudahkan Anda untuk mengkategorikan dan melacak biaya Anda AWS . [Untuk mengaktifkan tag alokasi biaya untuk Athena, Anda menggunakan AWS Manajemen Penagihan dan Biaya konsol.](https://console.aws.amazon.com/billing/)

Untuk informasi selengkapnya, lihat sumber daya berikut ini.
+ [Tag sumber daya Athena](tags.md)
+ [Mengaktifkan tag AWS alokasi biaya yang dihasilkan](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/activate-built-in-tags.html)
+ [Menggunakan tag alokasi biaya AWS](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)

# Buat reservasi kapasitas
<a name="capacity-management-creating-capacity-reservations"></a>

Untuk memulai, Anda membuat reservasi kapasitas yang memiliki jumlah DPUs yang Anda butuhkan, dan kemudian menetapkan satu atau lebih kelompok kerja yang akan menggunakan kapasitas itu untuk kueri mereka. Anda dapat menyesuaikan kapasitas Anda nanti sesuai kebutuhan untuk memberikan kinerja yang lebih konsisten atau mengelola biaya dengan lebih baik. Untuk informasi tentang memperkirakan kebutuhan kapasitas Anda, lihat[Tentukan persyaratan kapasitas](capacity-management-requirements.md).

**penting**  
Permintaan kapasitas tidak dijamin dan dapat memakan waktu hingga 30 menit untuk diselesaikan.

**Untuk membuat reservasi kapasitas**

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

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.

1. Pilih **Administrasi**, **Pemesanan kapasitas**.

1. Pilih **Buat reservasi kapasitas**.

1. Pada halaman **Buat reservasi kapasitas**, untuk **nama reservasi Kapasitas**, masukkan nama. Nama harus unik, dari 1 hingga 128 karakter, dan hanya menggunakan karakter a-z, A-Z, 0-9, \$1 (garis bawah),. (periode) dan - (tanda hubung) .Anda tidak dapat mengubah nama setelah Anda membuat reservasi.

1. Untuk **DPU**, pilih atau masukkan jumlah unit pemrosesan data (DPUs) yang Anda inginkan dengan penambahan 4. Untuk informasi selengkapnya, lihat [Memahami DPUs](capacity-management.md#capacity-management-understanding-dpus).

1. (Opsional) Perluas opsi **Tag**, lalu pilih **Tambahkan tag baru** untuk menambahkan satu atau beberapa key/value pasangan kustom untuk dikaitkan dengan sumber daya reservasi kapasitas. Untuk informasi selengkapnya, lihat [Tag sumber daya Athena](tags.md).

1. Pilih **Tinjau**.

1. Pada prompt **Konfirmasi membuat reservasi kapasitas**, konfirmasikan jumlah DPUs, Wilayah AWS, dan informasi lainnya. Jika Anda menerima, pilih **Kirim**.

   Pada halaman detail, **Status** reservasi kapasitas Anda ditampilkan sebagai **Tertunda**. Ketika kapasitas reservasi Anda tersedia untuk menjalankan kueri, statusnya ditampilkan sebagai **Aktif**.

Pada titik ini, Anda siap untuk menambahkan satu atau lebih kelompok kerja ke reservasi Anda. Untuk langkah, lihat [Menambahkan grup kerja ke reservasi](capacity-management-adding-workgroups-to-a-reservation.md).

# Kontrol penggunaan kapasitas
<a name="capacity-management-control-capacity-usage"></a>

Anda dapat mengontrol jumlah DPU yang dialokasikan Athena untuk kueri Anda dengan menetapkan kontrol DPU maksimum atau minimum. Anda dapat mengonfigurasinya di tingkat workgroup untuk menetapkan kontrol dasar untuk semua kueri, atau pada tingkat kueri individual untuk kontrol berbutir halus. Ini memberi Anda kontrol langsung atas kinerja kueri, konkurensi beban kerja, dan biaya.
+ Ketika Anda menetapkan jumlah maksimum DPU, kueri dicegah dari mengkonsumsi lebih banyak kapasitas daripada yang Anda tentukan. Ini membuatnya mudah untuk mengontrol konkurensi biaya dan beban kerja. Misalnya, jika reservasi kapasitas Anda memiliki 200 DPU, menyetel DPU maksimum per kueri ke 8 memungkinkan Anda menjalankan 25 kueri secara bersamaan. Jika Anda meningkatkan reservasi menjadi 400 DPU, Anda dapat menjalankan 50 kueri secara bersamaan.
+ Ketika Anda menetapkan jumlah minimum DPU, Anda memastikan kueri dijalankan dengan jumlah minimum DPU yang diinginkan. Ini sangat membantu ketika Anda mengetahui profil penggunaan kapasitas khas untuk pertanyaan Anda sebelumnya.

**catatan**  
Kontrol penggunaan DPU hanya berlaku untuk kueri yang dijalankan dengan reservasi kapasitas.

**catatan**  
Untuk menggunakan jumlah DPU yang sama untuk semua kueri, gunakan nilai yang sama untuk DPU minimum dan maksimum.

## Mengatur kontrol DPU di tingkat workgroup
<a name="capacity-management-set-dpu-controls-workgroup-level"></a>

Atur kontrol DPU di tingkat workgroup untuk mengelola biaya dan mengontrol kinerja beban kerja untuk workgroup yang Anda pilih. Kontrol DPU yang disetel pada tingkat workgroup berlaku untuk semua kueri saat Ganti pengaturan **sisi klien diaktifkan**.

**Untuk mengatur kontrol DPU menggunakan konsol**

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

1. Di panel navigasi, pilih **Workgroups**.

1. Pilih grup kerja yang menggunakan reservasi kapasitas.

1. Pada tab **Kontrol eksekusi**, pilih **Edit kontrol**.

1. Konfigurasikan berikut ini:
   + Untuk **Min DPU per kueri**, masukkan nilai antara 4 dan 124 dengan penambahan 4.
   + Untuk **DPU Maks per kueri**, masukkan nilai antara 4 dan 124 dengan penambahan 4.

1. Pilih **Simpan**.

1. (Opsional) Pilih **Ganti pengaturan sisi klien untuk menerapkan pengaturan** ini dan mengabaikan konfigurasi DPU tingkat kueri.

**Untuk mengatur kontrol DPU menggunakan AWS CLI**
+ Gunakan `update-work-group` perintah untuk mengatur kontrol DPU untuk workgroup:

  ```
  aws athena update-work-group \
    --work-group my_workgroup \
    --configuration-updates '{
          "EngineConfiguration": {
              "Classifications": [
                  {
                      "Name": "athena-query-engine-properties",
                      "Properties": {
                          "max-dpu-count" : "24",
                          "min-dpu-count" : "12"
                          }
                      }
                  ]
          }}'
  ```

  Jika Anda menyetel `EnforceWorkGroupConfiguration` ke`true`, pengaturan workgroup akan mengganti kontrol DPU yang ditentukan pada tingkat kueri saat dikirimkan melalui. [StartQueryExecution](https://docs.aws.amazon.com/athena/latest/APIReference/API_StartQueryExecution.html) Ini memastikan alokasi sumber daya yang konsisten di semua kueri di workgroup.

## Atur kontrol DPU dengan kueri individual
<a name="capacity-management-set-dpu-controls-individual-queries"></a>

Tetapkan kontrol DPU tingkat kueri saat Anda memerlukan kontrol berbutir halus dengan kueri yang memiliki persyaratan sumber daya berbeda. **Kontrol DPU tingkat kueri lebih diutamakan daripada setelan tingkat grup kerja kecuali grup kerja telah mengaktifkan Override setelan sisi klien.**

**Untuk mengatur kontrol DPU untuk kueri menggunakan konsol**

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

1. Di panel navigasi, pilih **Editor kueri**.

1. Pilih grup kerja yang menggunakan reservasi kapasitas.

1. Pilih tab **Pengaturan kueri**.

1. Di bagian **Kontrol eksekusi**, pilih **Edit kontrol**.

1. Konfigurasikan berikut ini:
   + Untuk **Min DPU per kueri**, masukkan nilai antara 4 dan 124 dengan penambahan 4.
   + Untuk **DPU Maks per kueri**, masukkan nilai antara 4 dan 124 dengan penambahan 4.

1. Pilih **Simpan**.

**Untuk mengatur kontrol DPU untuk kueri menggunakan AWS CLI**
+ Gunakan `start-query-execution` perintah dengan `engine-configuration` parameter:

  ```
  aws athena start-query-execution \
    --query-string "SELECT * FROM my_table LIMIT 10" \
    --work-group "my_workgroup" \
    --engine-configuration '{
      "Classifications": [ {
          "Name": "athena-query-engine-properties",
              "Properties": {
                  "max-dpu-count" : "32",
                  "min-dpu-count" : "8"
                  }
              }
          ]}'
  ```

Hubungan antara pengaturan DPU tingkat kueri dan tingkat kelompok kerja bergantung pada konfigurasi workgroup Anda:
+ Saat **Ganti setelan sisi klien** diaktifkan, kontrol DPU tingkat workgroup lebih diutamakan daripada setelan tingkat kueri apa pun. Ini memastikan penggunaan sumber daya yang konsisten untuk semua kueri di workgroup yang ditentukan.
+ Saat **Mengganti setelan sisi klien tidak diaktifkan, kontrol DPU tingkat kueri lebih diutamakan daripada pengaturan** tingkat grup kerja. Ini memungkinkan fleksibilitas untuk mengoptimalkan kueri individual.

Jika Anda tidak menentukan kontrol DPU di kedua level, Athena secara otomatis mengalokasikan kapasitas berdasarkan kompleksitas kueri.

**catatan**  
Untuk kueri DDL, nilai maksimum minimum DPUs adalah 4. Menetapkan minimum yang lebih tinggi untuk kueri DDL menghasilkan kesalahan.

## Pantau penggunaan DPU
<a name="capacity-management-monitor-dpu-usage"></a>

Setelah kueri Anda selesai, Anda dapat melihat penggunaan DPU-nya. Athena menyediakan metrik penggunaan DPU melalui konsol, operasi API, dan. CloudWatch

**Untuk melihat konsumsi DPU di konsol**

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

1. Di panel navigasi, pilih **Editor kueri**.

1. Setelah kueri selesai, lihat nilai **DPU yang Dikonsumsi** dalam wadah hasil kueri.

1. Untuk melihat konsumsi DPU untuk kueri sebelumnya:

   1. Pilih **Kueri terbaru** di panel navigasi.

   1. Pilih ikon pengaturan untuk menambahkan kolom **DPU yang Dikonsumsi** ke tabel jika belum ditampilkan.

   1. Tinjau konsumsi DPU untuk setiap kueri yang diselesaikan.

1. Secara opsional, dari **editor Query**, pilih tab **Query stats** dan tinjau DPU yang **Dikonsumsi**.

**Untuk mengambil konsumsi DPU menggunakan API**

1. Gunakan operasi API berikut untuk mengambil konsumsi DPU secara terprogram:
   + `GetQueryExecution`- Mengembalikan rincian eksekusi untuk query tertentu
   + `BatchGetQueryExecution`- Mengembalikan rincian eksekusi untuk beberapa query

1. Contoh menggunakan AWS CLI:

   ```
   aws athena get-query-execution \
     --query-execution-id "123e4567-e89b-12d3-a456-426614174000"
   ```

   Respons termasuk `DpuCount` bidang dalam `Statistics` objek:

   ```
   {
     "QueryExecution": {
       "Statistics": {
         "DpuCount": 8
       }
     }
   }
   ```

**Untuk memantau penggunaan DPU dengan CloudWatch**
+ Athena menerbitkan metrik terkait kueri CloudWatch yang membantu Anda memantau pemanfaatan kapasitas dan data kinerja lainnya. Untuk mempelajari selengkapnya, lihat [Pantau metrik kueri Athena dengan CloudWatch](query-metrics-viewing.md).

# Secara otomatis menyesuaikan kapasitas
<a name="capacity-management-automatically-adjust-capacity"></a>

Anda dapat secara otomatis menyesuaikan kapasitas reservasi Anda sebagai respons terhadap pemanfaatan beban kerja menggunakan solusi auto-scaling Athena. Ini secara otomatis menambah kapasitas ketika pemanfaatan melebihi ambang batas yang dikonfigurasi dan menghilangkan kapasitas selama periode pemanfaatan rendah untuk mengurangi biaya. Anda dapat menyesuaikan perilakunya dengan menetapkan ambang batas pemanfaatan yang berbeda, jumlah DPU minimum dan maksimum, peningkatan skala, dan frekuensi evaluasi pemanfaatan. Ini menghilangkan penyesuaian kapasitas manual sekaligus membantu Anda menyeimbangkan persyaratan kinerja dengan pengoptimalan biaya.

Anda menerapkan solusi tanpa server ini menggunakan templat. CloudFormation Ini menciptakan mesin status Step Functions yang memantau metrik pemanfaatan dan membuat keputusan penskalaan. Anda dapat lebih lanjut menyesuaikan template atau mesin negara untuk memenuhi kebutuhan spesifik Anda.

Untuk memulai, gunakan konsol Athena dan pilih **Siapkan auto-scaling** pada halaman detail reservasi kapasitas Anda, yang mengarahkan Anda ke templat yang telah dimuat sebelumnya. CloudFormation Atau, ikuti prosedur di bawah ini.

## Prasyarat
<a name="capacity-management-auto-scaling-prerequisites"></a>
+ Diperlukan reservasi kapasitas aktif
+ Izin IAM yang diperlukan untuk menerapkan CloudFormation tumpukan dan membuat sumber daya Step Functions

## Luncurkan CloudFormation tumpukan
<a name="capacity-management-auto-scaling-launch-stack"></a>

 CloudFormation Template otomatis ini menerapkan solusi auto-scaling Reservasi Kapasitas Athena. Anda harus menyelesaikan langkah-langkah yang berlaku [Prasyarat](#capacity-management-auto-scaling-prerequisites) sebelum meluncurkan tumpukan.

[https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?&templateURL=https:%2F%2Fathena-downloads.s3.us-east-1.amazonaws.com%2F%2Ftemplates%2F%2Fcapacity-reservation-scaling%2F%2Fstate-machine%2F%2Fathena-capacity-reservation-scaling-template-v1.1.yaml](https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?&templateURL=https:%2F%2Fathena-downloads.s3.us-east-1.amazonaws.com%2F%2Ftemplates%2F%2Fcapacity-reservation-scaling%2F%2Fstate-machine%2F%2Fathena-capacity-reservation-scaling-template-v1.1.yaml) 

**Untuk meluncurkan solusi auto-scaling**

1. Masuk ke [AWS Management Console](https://console.aws.amazon.com/) dan pilih tombol untuk meluncurkan `AWSAccelerator-InstallerStack` CloudFormation template.

1. Template diluncurkan di AS Timur (Virginia N.) secara default. Untuk meluncurkan solusi di tempat lain Wilayah AWS, gunakan pemilih Wilayah di bilah navigasi konsol.

1. **Pada halaman **Buat tumpukan**, verifikasi bahwa URL templat ada di kotak teks **URL Amazon S3** dan pilih Berikutnya.**

1. Pada halaman **Tentukan detail tumpukan**, tetapkan nama ke tumpukan solusi Anda.

1. Di bawah **Parameter**, tinjau parameter untuk templat solusi ini dan modifikasi sesuai kebutuhan. Solusi ini menggunakan nilai default berikut.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/capacity-management-automatically-adjust-capacity.html)
**catatan**  
Semua nilai DPU harus kelipatan 4 untuk memenuhi persyaratan reservasi kapasitas Athena.

1. Pilih **Berikutnya**.

1. Pada halaman **Konfigurasikan opsi tumpukan**, pilih **Berikutnya**.

1. Pada halaman **Tinjau dan buat**, tinjau dan konfirmasikan pengaturan. Pilih kotak yang mengakui bahwa template mungkin membuat sumber daya IAM.

1. Pilih **Kirim** untuk menyebarkan tumpukan.

   Anda dapat melihat status tumpukan di CloudFormation konsol di kolom **Status**. Anda akan menerima `CREATE_COMPLETE` status dalam beberapa menit.

# Kelola reservasi
<a name="capacity-management-managing-reservations"></a>

Anda dapat melihat dan mengelola reservasi kapasitas Anda di halaman reservasi **Kapasitas.** Anda dapat melakukan tugas manajemen seperti menambah atau mengurangi DPUs, memodifikasi tugas kelompok kerja, dan menandai atau membatalkan reservasi.

**Untuk melihat dan mengelola reservasi kapasitas**

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

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.

1. Pilih **Administrasi**, **Pemesanan kapasitas**.

1. Pada halaman reservasi kapasitas, Anda dapat melakukan tugas-tugas berikut:
   + Untuk membuat reservasi kapasitas, pilih **Buat reservasi kapasitas**.
   + Gunakan kotak pencarian untuk memfilter reservasi berdasarkan nama atau nomor. DPUs
   + Pilih menu tarik-turun status untuk memfilter berdasarkan status reservasi kapasitas (misalnya, **Aktif** atau **Dibatalkan**). Untuk informasi tentang status reservasi, lihat[Memahami status reservasi](#capacity-management-understanding-reservation-status).
   + Untuk melihat detail reservasi kapasitas, pilih tautan untuk reservasi. Halaman detail untuk reservasi mencakup opsi untuk [mengedit kapasitas](capacity-management-editing-capacity-reservations.md), [menambahkan grup kerja, menghapus grup](capacity-management-adding-workgroups-to-a-reservation.md) [kerja](capacity-management-removing-a-workgroup-from-a-reservation.md), dan untuk [membatalkan](capacity-management-cancelling-a-capacity-reservation.md) reservasi.
   + Untuk mengedit reservasi (misalnya, dengan menambahkan atau menghapus DPUs), pilih tombol untuk reservasi, lalu pilih **Edit**.
   + Untuk membatalkan reservasi, pilih tombol untuk reservasi, lalu pilih **Batalkan**.

## Memahami status reservasi
<a name="capacity-management-understanding-reservation-status"></a>

Tabel berikut menjelaskan kemungkinan nilai status untuk reservasi kapasitas.


****  

| Status | Deskripsi | 
| --- | --- | 
| Tertunda | Athena memproses permintaan kapasitas Anda. Kapasitas belum siap untuk menjalankan kueri. | 
| Aktif | Kapasitas tersedia untuk menjalankan kueri. | 
| Gagal | Permintaan kapasitas Anda tidak berhasil diselesaikan. Perhatikan bahwa pemenuhan permintaan kapasitas tidak dijamin. Reservasi yang gagal dihitung terhadap batas DPU akun Anda. Untuk melepaskan penggunaan, Anda harus membatalkan reservasi. | 
| Pembaruan tertunda | Athena sedang memproses perubahan pada reservasi. Misalnya, status ini terjadi setelah Anda mengedit reservasi untuk menambah atau menghapus DPUs. | 
| Membatalkan | Athena sedang memproses permintaan untuk membatalkan reservasi. Kueri yang masih berjalan di grup kerja yang menggunakan reservasi diizinkan untuk diselesaikan, tetapi kueri lain di grup kerja akan menggunakan kapasitas sesuai permintaan (tidak disediakan). | 
| Dibatalkan |  Pembatalan reservasi kapasitas selesai. Pemesanan yang dibatalkan tetap berada di konsol selama 45 hari. Setelah 45 hari, Athena akan menghapus reservasi. Selama 45 hari, Anda tidak dapat melakukan tujuan ulang atau menggunakan kembali reservasi, tetapi Anda dapat merujuk pada tag dan melihat detailnya untuk referensi historis. Kapasitas yang dibatalkan tidak dijamin dapat dipesan ulang di masa mendatang. Kapasitas tidak dapat ditransfer ke reservasi lain, Akun AWS atau Wilayah AWS.   | 

## Memahami Aktif DPUs dan Target DPUs
<a name="capacity-management-understanding-dpu-status"></a>

**Dalam daftar reservasi kapasitas di konsol Athena, reservasi Anda menampilkan dua nilai DPU**: DPU Aktif** dan DPU Target.**
+ **DPU Aktif** — Jumlah DPUs yang tersedia di reservasi Anda untuk menjalankan kueri. Misalnya, jika Anda meminta 100 DPUs, dan permintaan Anda terpenuhi, **DPU Aktif** menampilkan **100**.
+ **Target DPU** — Jumlah DPUs reservasi Anda sedang dalam proses pindah. **Target DPU** menampilkan nilai yang berbeda dari **DPU Aktif** saat reservasi sedang dibuat, atau peningkatan atau penurunan jumlah yang tertunda DPUs .

**Misalnya, setelah Anda mengajukan permintaan untuk membuat reservasi dengan 24 DPUs, **Status** reservasi akan **Tertunda**, **DPU Aktif** akan menjadi **0**, dan **DPU Target** akan menjadi 24.**

**Jika Anda memiliki reservasi dengan 100 DPUs, dan mengedit reservasi Anda untuk meminta kenaikan 20 DPUs, **Status** akan **Update tertunda**, **DPU Aktif** akan menjadi **100**, dan **Target DPU** akan menjadi 120.**

**Jika Anda memiliki reservasi dengan 100 DPUs, dan mengedit reservasi Anda untuk meminta penurunan 20 DPUs, **Status** akan **Update tertunda**, **DPU Aktif** akan menjadi **100**, dan **Target DPU** akan menjadi 80.**

Selama transisi ini, Athena secara aktif bekerja untuk memperoleh atau mengurangi DPUs jumlah berdasarkan permintaan Anda. Ketika **DPU Aktif** menjadi sama dengan **DPU Target**, jumlah target telah tercapai dan tidak ada perubahan yang tertunda.

Untuk mengambil nilai-nilai ini secara terprogram, Anda dapat memanggil tindakan API. [GetCapacityReservation](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetCapacityReservation.html) API mengacu pada DPU **Aktif dan DPU** **Target** sebagai `AllocatedDpus` dan. `TargetDpus`

**Topics**
+ [Memahami status reservasi](#capacity-management-understanding-reservation-status)
+ [Memahami Aktif DPUs dan Target DPUs](#capacity-management-understanding-dpu-status)
+ [Edit reservasi kapasitas](capacity-management-editing-capacity-reservations.md)
+ [Menambahkan grup kerja ke reservasi](capacity-management-adding-workgroups-to-a-reservation.md)
+ [Menghapus grup kerja dari reservasi](capacity-management-removing-a-workgroup-from-a-reservation.md)
+ [Batalkan reservasi kapasitas](capacity-management-cancelling-a-capacity-reservation.md)
+ [Hapus reservasi kapasitas](capacity-management-deleting-a-capacity-reservation.md)

# Edit reservasi kapasitas
<a name="capacity-management-editing-capacity-reservations"></a>

Setelah Anda membuat reservasi kapasitas, Anda dapat menyesuaikan jumlah DPUs dan menambah atau menghapus tag kustomnya.

**Untuk mengedit reservasi kapasitas**

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

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.

1. Pilih **Administrasi**, **Pemesanan kapasitas**.

1. Dalam daftar reservasi kapasitas, lakukan salah satu hal berikut:
   + Pilih tombol di sebelah reservasi, lalu pilih **Edit**.
   + Pilih tautan reservasi, lalu pilih **Edit**.

1. Untuk **DPU**, pilih atau masukkan jumlah unit pemrosesan data yang Anda inginkan. Untuk informasi selengkapnya, lihat [Memahami DPUs](capacity-management.md#capacity-management-understanding-dpus).
**catatan**  
Anda dapat meminta DPUs untuk menambah reservasi kapasitas aktif kapan saja.
Anda dapat meminta pengurangan DPUs dari reservasi kapasitas aktif ketika 1 menit telah berlalu sejak reservasi menjadi aktif atau kapan terakhir DPUs ditambahkan.
Saat Anda meminta untuk mengurangi DPUs, Athena memprioritaskan menghapus idle daripada aktif. DPUs DPUs Jika kueri memakan DPUs yang ditandai untuk dihapus, Athena menunggu kueri selesai sebelum menghapus. DPUs 

1. (Opsional) Untuk **Tag**, pilih **Hapus** untuk menghapus tag, atau pilih **Tambahkan tag baru** untuk menambahkan tag baru.

1. Pilih **Kirim**. Halaman detail untuk reservasi menunjukkan konfigurasi yang diperbarui.

# Menambahkan grup kerja ke reservasi
<a name="capacity-management-adding-workgroups-to-a-reservation"></a>

Setelah membuat reservasi kapasitas, Anda dapat menambahkan hingga 20 grup kerja ke reservasi. Menambahkan grup kerja ke reservasi memberi tahu Athena kueri mana yang harus dijalankan pada kapasitas cadangan Anda. Kueri dari grup kerja yang tidak terkait dengan reservasi terus berjalan menggunakan model harga pindaian per terabyte (TB) default.

Jika reservasi memiliki dua grup kerja atau lebih, kueri dari kelompok kerja tersebut dapat menggunakan kapasitas reservasi. Anda dapat menambah dan menghapus workgroup kapan saja. Saat Anda menambah atau menghapus grup kerja, kueri yang sedang berjalan tidak akan terganggu.

Ketika reservasi Anda dalam status tertunda, kueri dari grup kerja yang telah Anda tambahkan terus berjalan menggunakan model harga yang dipindai per terabyte (TB) default hingga reservasi menjadi aktif.

**Untuk menambahkan satu atau beberapa grup kerja ke reservasi kapasitas Anda**

1. Pada halaman detail untuk reservasi kapasitas, pilih **Tambahkan grup kerja**.

1. Pada halaman **Tambahkan grup kerja**, pilih grup kerja yang ingin Anda tambahkan, lalu pilih **Tambahkan** grup kerja. Anda tidak dapat menetapkan workgroup ke lebih dari satu reservasi.

   Halaman detail untuk reservasi kapasitas Anda mencantumkan grup kerja yang Anda tambahkan. Kueri yang berjalan dalam kelompok kerja tersebut akan menggunakan kapasitas yang Anda pesan saat reservasi aktif.

# Menghapus grup kerja dari reservasi
<a name="capacity-management-removing-a-workgroup-from-a-reservation"></a>

Jika Anda tidak lagi memerlukan kapasitas khusus untuk grup kerja atau ingin memindahkan grup kerja ke reservasi sendiri, Anda dapat menghapusnya kapan saja. Menghapus workgroup dari reservasi adalah proses yang mudah. Setelah Anda menghapus grup kerja dari reservasi, kueri dari grup kerja yang dihapus kembali menggunakan kapasitas sesuai permintaan dan ditagih berdasarkan terabyte (TB) yang dipindai.

**Untuk menghapus satu atau beberapa grup kerja dari reservasi**

1. Pada halaman detail untuk reservasi kapasitas, pilih grup kerja yang ingin Anda hapus.

1. Pilih **Hapus grup kerja**. **Hapus kelompok kerja?** prompt memberi tahu Anda bahwa semua kueri yang sedang aktif akan selesai sebelum workgroup dihapus dari reservasi..

1. Pilih **Hapus**. Halaman detail untuk reservasi kapasitas Anda menunjukkan bahwa grup kerja yang dihapus tidak lagi ada.

# Batalkan reservasi kapasitas
<a name="capacity-management-cancelling-a-capacity-reservation"></a>

Jika Anda tidak lagi ingin menggunakan reservasi kapasitas, Anda dapat membatalkannya. Kueri yang masih berjalan di grup kerja yang menggunakan reservasi akan diizinkan untuk diselesaikan, tetapi kueri lain di grup kerja tidak akan lagi menggunakan reservasi.

**catatan**  
Kapasitas yang dibatalkan tidak dijamin dapat dipesan ulang di masa mendatang. Kapasitas tidak dapat ditransfer ke reservasi lain, Akun AWS atau Wilayah AWS. 

**Untuk membatalkan reservasi kapasitas**

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

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.

1. Pilih **Administrasi**, **Pemesanan kapasitas**.

1. Dalam daftar reservasi kapasitas, lakukan salah satu hal berikut:
   + Pilih tombol di sebelah reservasi, lalu pilih **Batalkan**.
   + Pilih tautan reservasi, lalu pilih **Batalkan reservasi kapasitas**.

1. Pada **reservasi kapasitas Batalkan?** prompt, masukkan **batal**, lalu pilih **Batalkan reservasi kapasitas**.

   Status reservasi berubah menjadi **Pembatalan**, dan spanduk kemajuan memberi tahu Anda bahwa pembatalan sedang berlangsung.

   Ketika pembatalan selesai, reservasi kapasitas tetap ada, tetapi statusnya ditampilkan sebagai **Dibatalkan**. Reservasi akan dihapus 45 hari setelah pembatalan. Selama 45 hari, Anda tidak dapat mengubah tujuan atau menggunakan kembali reservasi yang telah dibatalkan, tetapi Anda dapat merujuk ke tag dan melihatnya untuk referensi historis.

# Hapus reservasi kapasitas
<a name="capacity-management-deleting-a-capacity-reservation"></a>

Jika Anda ingin menghapus semua referensi ke reservasi kapasitas yang dibatalkan, Anda dapat menghapus reservasi. Reservasi harus dibatalkan sebelum dapat dihapus. Reservasi yang dihapus segera dihapus dari akun Anda dan tidak dapat lagi direferensikan, termasuk oleh ARN-nya.

**Untuk menghapus reservasi kapasitas**

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

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.

1. Pilih **Administrasi**, **Pemesanan kapasitas**.

1. Dalam daftar reservasi kapasitas, lakukan salah satu hal berikut:
   + Pilih tombol di samping reservasi yang dibatalkan, lalu pilih **Tindakan**, **Hapus**.
   + Pilih tautan reservasi, lalu pilih **Hapus**.

1. Pada **reservasi kapasitas Hapus?** prompt, pilih **Hapus**.

   Spanduk memberi tahu Anda bahwa reservasi kapasitas telah berhasil dihapus. Reservasi yang dihapus tidak lagi muncul dalam daftar reservasi kapasitas.

# Kebijakan IAM untuk reservasi kapasitas
<a name="capacity-reservations-iam-policy"></a>

Untuk mengontrol akses ke reservasi kapasitas, gunakan izin IAM tingkat sumber daya atau kebijakan IAM berbasis identitas. Setiap kali Anda menggunakan kebijakan IAM, pastikan bahwa Anda mengikuti praktik terbaik IAM. Untuk informasi selengkapnya tentang administrator, lihat [Praktik terbaik keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dalam *Panduan Pengguna IAM*.

Prosedur berikut khusus untuk Athena. 

Untuk informasi khusus IAM, lihat tautan yang tercantum di akhir bagian ini. Untuk informasi tentang contoh kebijakan reservasi kapasitas JSON, lihat. [Contoh kebijakan reservasi kapasitas](example-policies-capacity-reservations.md)

**Untuk menggunakan editor visual di konsol IAM untuk membuat kebijakan reservasi kapasitas**

1. Masuk ke Konsol Manajemen AWS dan buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Pada panel navigasi yang ada di sebelah kiri, pilih **Kebijakan**, lalu pilih **Buat kebijakan**.

1. Pada tab **Editor visual**, pilih **Pilih layanan**. Pilih Athena untuk ditambahkan ke kebijakan.

1. Pilih **Pilih tindakan**, kemudian pilih tindakan untuk ditambahkan ke kebijakan. Editor visual menunjukkan tindakan yang tersedia di Athena. Untuk informasi selengkapnya, lihat [Kunci tindakan, sumber daya, dan kondisi untuk Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html) di Referensi *Otorisasi Layanan*.

1. Pilih **tambahkan tindakan** untuk mengetik tindakan tertentu atau gunakan karakter wild card (\$1) untuk menentukan beberapa tindakan. 

   Secara default, kebijakan yang Anda buat mengizinkan tindakan yang Anda pilih. Jika Anda memilih satu atau lebih tindakan yang mendukung izin level sumber daya ke sumber daya `capacity-reservation` di Athena, editor akan mencantumkan sumber daya `capacity-reservation` tersebut. 

1. Pilih **Sumber Daya** untuk menentukan reservasi kapasitas spesifik untuk polis Anda. Misalnya kebijakan reservasi kapasitas JSON, lihat[Contoh kebijakan reservasi kapasitas](example-policies-capacity-reservations.md).

1. Tentukan sumber daya `capacity-reservation` sebagai berikut:

   ```
   arn:aws:athena:<region>:<user-account>:capacity-reservation/<capacity-reservation-name>
   ```

1. Pada halaman **Tinjau kebijakan**, ketik **Nama** dan **Deskripsi** (opsional) untuk kebijakan yang Anda buat. Tinjau ringkasan kebijakan untuk memastikan bahwa Anda memberikan izin yang dimaksud. 

1. Pilih **Buat kebijakan** untuk menyimpan kebijakan baru Anda.

1. Lampirkan kebijakan berbasis identitas ini ke pengguna, grup, atau peran.

Untuk informasi selengkapnya, lihat topik berikut di *Referensi Otorisasi Layanan* dan *Panduan Pengguna IAM:*
+  [Tindakan, sumber daya, dan kunci kondisi untuk Amazon Athena](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonathena.html) 
+  [Membuat kebijakan dengan editor visual](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor) 
+  [Menambahkan dan menghapus kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) 
+  [Mengontrol akses ke sumber daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_controlling.html#access_controlling-resources) 

Misalnya kebijakan reservasi kapasitas JSON, lihat[Contoh kebijakan reservasi kapasitas](example-policies-capacity-reservations.md).

Untuk daftar lengkap tindakan Amazon Athena, lihat nama tindakan API di[Referensi API Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). 

# Contoh kebijakan reservasi kapasitas
<a name="example-policies-capacity-reservations"></a>

Bagian ini mencakup contoh kebijakan yang dapat Anda gunakan untuk mengaktifkan berbagai tindakan pada reservasi kapasitas. Setiap kali Anda menggunakan kebijakan IAM, pastikan bahwa Anda mengikuti praktik terbaik IAM. Untuk informasi selengkapnya tentang administrator, lihat [Praktik terbaik keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dalam *Panduan Pengguna IAM*.

Reservasi kapasitas adalah sumber daya IAM yang dikelola oleh Athena. Oleh karena itu, jika kebijakan reservasi kapasitas Anda menggunakan tindakan yang diambil `capacity-reservation` sebagai masukan, Anda harus menentukan ARN reservasi kapasitas sebagai berikut:

```
"Resource": [arn:aws:athena:<region>:<user-account>:capacity-reservation/<capacity-reservation-name>]
```

Di `<capacity-reservation-name>` mana nama reservasi kapasitas Anda. Misalnya, untuk reservasi kapasitas bernama`test_capacity_reservation`, tentukan sebagai sumber daya sebagai berikut:

```
"Resource": ["arn:aws:athena:us-east-1:123456789012:capacity-reservation/test_capacity_reservation"]
```

Untuk daftar lengkap tindakan Amazon Athena, lihat nama tindakan API di[Referensi API Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/). Untuk informasi selengkapnya tentang kebijakan IAM, lihat [Membuat kebijakan dengan editor visual](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-visual-editor) di *Panduan Pengguna IAM*.

**Example Contoh kebijakan untuk membuat daftar reservasi kapasitas**  
Kebijakan berikut memungkinkan semua pengguna untuk membuat daftar semua reservasi kapasitas.    
****  

```
{ 
    "Version":"2012-10-17",		 	 	  
    "Statement": [ 
        { 
            "Effect": "Allow", 
            "Action": [ 
                "athena:ListCapacityReservations" 
            ], 
            "Resource": "*" 
        } 
    ] 
}
```

**Example Contoh kebijakan untuk operasi manajemen**  
Kebijakan berikut memungkinkan pengguna untuk membuat, membatalkan, memperoleh detail, dan memperbarui reservasi kapasitas`test_capacity_reservation`. Kebijakan ini juga memungkinkan pengguna untuk menetapkan `workgroupA` dan `workgroupB` melakukan`test_capacity_reservation`.    
****  

```
{ 
   "Version":"2012-10-17",		 	 	  
   "Statement":[ 
      { 
         "Effect": "Allow", 
         "Action": [ 
             "athena:CreateCapacityReservation", 
             "athena:GetCapacityReservation", 
             "athena:CancelCapacityReservation", 
             "athena:UpdateCapacityReservation", 
             "athena:GetCapacityAssignmentConfiguration", 
             "athena:PutCapacityAssignmentConfiguration" 
         ], 
         "Resource": [ 
             "arn:aws:athena:us-east-1:123456789012:capacity-reservation/test_capacity_reservation", 
             "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA", 
             "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupB" 
         ] 
      } 
   ] 
}
```

# Pemesanan kapasitas Athena APIs
<a name="capacity-management-api-list"></a>

Daftar berikut berisi tautan referensi ke tindakan API reservasi kapasitas Athena. Untuk struktur data dan tindakan API Athena lainnya, lihat Referensi API [https://docs.aws.amazon.com/athena/latest/APIReference/](https://docs.aws.amazon.com/athena/latest/APIReference/). 
+  [CancelCapacityReservation](https://docs.aws.amazon.com/athena/latest/APIReference/API_CancelCapacityReservation.html) 
+  [CreateCapacityReservation](https://docs.aws.amazon.com/athena/latest/APIReference/API_CreateCapacityReservation.html) 
+  [DeleteCapacityReservation](https://docs.aws.amazon.com/athena/latest/APIReference/API_DeleteCapacityReservation.html) 
+  [GetCapacityAssignmentConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetCapacityAssignmentConfiguration.html) 
+  [GetCapacityReservation](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetCapacityReservation.html) 
+  [ListCapacityReservations](https://docs.aws.amazon.com/athena/latest/APIReference/API_ListCapacityReservations.html) 
+  [PutCapacityAssignmentConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_PutCapacityAssignmentConfiguration.html) 
+  [UpdateCapacityReservation](https://docs.aws.amazon.com/athena/latest/APIReference/API_UpdateCapacityReservation.html) 

# Optimalkan kinerja Athena
<a name="performance-tuning"></a>

Topik ini memberikan informasi umum dan saran khusus untuk meningkatkan kinerja kueri Athena Anda, dan cara mengatasi kesalahan yang terkait dengan batasan dan penggunaan sumber daya.

Secara garis besar, optimasi dapat dikelompokkan ke dalam kategori layanan, kueri, dan struktur data. Keputusan yang dibuat di tingkat layanan, tentang cara Anda menulis kueri, dan bagaimana Anda menyusun data dan tabel semuanya dapat memengaruhi kinerja.

**Topics**
+ [Optimalkan penggunaan layanan](performance-tuning-service-level-considerations.md)
+ [Optimalkan kueri](performance-tuning-query-optimization-techniques.md)
+ [Optimalkan data](performance-tuning-data-optimization-techniques.md)
+ [Gunakan format penyimpanan kolumnar](columnar-storage.md)
+ [Gunakan partisi dan bucketing](ctas-partitioning-and-bucketing.md)
+ [Partisi data Anda](partitions.md)
+ [Gunakan proyeksi partisi dengan Amazon Athena](partition-projection.md)
+ [Cegah pelambatan Amazon S3](performance-tuning-s3-throttling.md)
+ [Sumber daya tambahan](performance-tuning-additional-resources.md)

# Optimalkan penggunaan layanan
<a name="performance-tuning-service-level-considerations"></a>

Pertimbangan tingkat layanan mencakup jumlah beban kerja yang Anda jalankan per akun, kuota layanan tidak hanya untuk Athena, tetapi di seluruh layanan, dan pemikiran tentang cara mengurangi kesalahan 'kehabisan sumber daya'.

**Topics**
+ [Mengoperasikan beberapa beban kerja dalam akun yang sama](#performance-tuning-service-quotas)
+ [Mengurangi kesalahan 'kehabisan sumber daya'](#performance-tuning-resource-limits)

## Mengoperasikan beberapa beban kerja dalam akun yang sama
<a name="performance-tuning-service-quotas"></a>

Athena menggunakan kuota untuk membatasi konkurensi kueri dan tingkat permintaan API di tingkat akun. Melebihi kuota ini dapat menyebabkan kueri gagal selama eksekusi atau pada waktu pengiriman. Untuk informasi lebih lanjut tentang kuota ini, lihat[Service Quotas](service-limits.md). 

Jika Anda mengoperasikan beberapa beban kerja dalam AWS akun yang sama, beban kerja Anda bersaing untuk mendapatkan kuota tingkat akun yang sama. Misalnya, jika satu beban kerja mengalami ledakan kueri yang tidak terduga, beban kerja lain yang berjalan di akun yang sama mungkin melihat waktu antrian yang meningkat, atau dalam kasus terburuk kegagalan pengiriman kueri karena pembatasan.

Kami menyarankan Anda menggunakan CloudWatch untuk memantau penggunaan layanan Anda melalui grafik dan dasbor. Anda juga dapat mengonfigurasi CloudWatch alarm yang mengingatkan Anda saat penggunaan mendekati kuota layanan untuk kueri bersamaan, sehingga Anda dapat mengambil tindakan sebelum mencapai batas kuota. Untuk informasi selengkapnya, lihat [Pantau metrik penggunaan Athena dengan CloudWatch](monitoring-athena-usage-metrics.md).

Untuk mengontrol konkurensi kueri dan mengisolasi beban kerja dalam akun Anda, gunakan reservasi kapasitas. Reservasi kapasitas menyediakan kapasitas pemrosesan kueri khusus dalam satu akun. Kapasitas diukur dalam Unit Pemrosesan Data (DPUs) dan dapat ditambahkan atau dihapus untuk menambah atau mengurangi konkurensi kueri, masing-masing. Reservasi kapasitas memungkinkan Anda untuk mengisolasi beban kerja dalam akun Anda dari satu sama lain dengan menetapkan kapasitas ke satu atau beberapa kelompok kerja. Untuk informasi selengkapnya, lihat [Kelola kapasitas pemrosesan kueri](capacity-management.md).

Meskipun Anda harus mengisolasi beban kerja yang tidak terkait di AWS akun yang berbeda (seperti mengisolasi pengembangan dari lingkungan produksi), pendekatan ini tidak menyediakan cara yang dapat diskalakan untuk meningkatkan konkurensi kueri. Sebagai gantinya, gunakan reservasi kapasitas untuk mengelola dan menskalakan kebutuhan pemrosesan kueri Anda dalam satu akun.

### Pertimbangkan kuota di layanan lain
<a name="performance-tuning-quotas-in-other-services"></a>

Ketika Athena menjalankan kueri, ia dapat memanggil layanan lain yang memberlakukan kuota. Selama eksekusi kueri, Athena dapat melakukan panggilan API ke, Amazon S3 AWS Glue Data Catalog, dan layanan AWS lain seperti IAM dan. AWS KMS Jika Anda menggunakan [kueri federasi](federated-queries.md), Athena juga menelepon. AWS Lambda Semua layanan ini memiliki batas dan kuota sendiri yang dapat dilampaui. Ketika eksekusi kueri menemukan kesalahan dari layanan ini, gagal dan menyertakan kesalahan dari layanan sumber. Kesalahan yang dapat dipulihkan dicoba ulang, tetapi kueri masih bisa gagal jika masalah tidak teratasi dengan sendirinya tepat waktu. Pastikan untuk membaca pesan kesalahan secara menyeluruh untuk menentukan apakah pesan tersebut berasal dari Athena atau dari layanan lain. Beberapa kesalahan yang relevan tercakup dalam bagian tuning kinerja ini.

Untuk informasi selengkapnya tentang mengatasi kesalahan yang disebabkan oleh kuota layanan Amazon S3, lihat [Hindari memiliki terlalu banyak file](performance-tuning-data-optimization-techniques.md#performance-tuning-avoid-having-too-many-files) nanti di dokumen ini. *Untuk informasi selengkapnya tentang pengoptimalan kinerja Amazon S3, lihat [Pola desain praktik terbaik: mengoptimalkan kinerja Amazon S3 di Panduan Pengguna Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance.html).*

## Mengurangi kesalahan 'kehabisan sumber daya'
<a name="performance-tuning-resource-limits"></a>

Athena menjalankan kueri di mesin kueri terdistribusi. Saat Anda mengirimkan kueri, perencana kueri mesin Athena memperkirakan kapasitas komputasi yang diperlukan untuk menjalankan kueri dan menyiapkan sekelompok node komputasi yang sesuai. Beberapa query seperti query DDL berjalan hanya pada satu node. Kueri kompleks pada kumpulan data besar berjalan pada cluster yang jauh lebih besar. Node seragam, dengan konfigurasi memori, CPU, dan disk yang sama. Athena meningkatkan, bukan meningkatkan, untuk memproses pertanyaan yang lebih menuntut.

Terkadang permintaan kueri melebihi sumber daya yang tersedia untuk cluster yang menjalankan kueri. Ketika ini terjadi, kueri gagal dengan kesalahan Sumber daya yang habis Kueri pada faktor skala ini.

Sumber daya yang paling sering habis adalah memori, tetapi dalam kasus yang jarang terjadi juga bisa berupa ruang disk. Kesalahan memori biasanya terjadi ketika mesin melakukan fungsi gabungan atau jendela, tetapi mereka juga dapat terjadi dalam jumlah dan agregasi yang berbeda.

Bahkan jika kueri gagal dengan kesalahan 'kehabisan sumber daya' sekali, itu mungkin berhasil ketika Anda menjalankannya lagi. Eksekusi kueri tidak deterministik. Faktor-faktor seperti berapa lama waktu yang dibutuhkan untuk memuat data dan bagaimana dataset menengah didistribusikan melalui node dapat menghasilkan penggunaan sumber daya yang berbeda. Misalnya, bayangkan kueri yang menggabungkan dua tabel dan memiliki kemiringan berat dalam distribusi nilai untuk kondisi gabungan. Kueri semacam itu dapat berhasil sebagian besar waktu tetapi kadang-kadang gagal ketika nilai yang paling umum akhirnya diproses oleh node yang sama.

Untuk mencegah kueri Anda melebihi sumber daya yang tersedia, gunakan kiat penyetelan kinerja yang disebutkan dalam dokumen ini. Khususnya, untuk tips tentang cara mengoptimalkan kueri yang menghabiskan sumber daya yang tersedia, lihat [Optimalkan bergabung](performance-tuning-query-optimization-techniques.md#performance-tuning-optimizing-joins)[Kurangi ruang lingkup fungsi jendela, atau hapus](performance-tuning-query-optimization-techniques.md#performance-tuning-optimizing-window-functions), dan[Optimalkan kueri dengan menggunakan perkiraan](performance-tuning-query-optimization-techniques.md#performance-tuning-optimizing-queries-by-using-approximations). 

# Optimalkan kueri
<a name="performance-tuning-query-optimization-techniques"></a>

Gunakan teknik pengoptimalan kueri yang dijelaskan di bagian ini untuk membuat kueri berjalan lebih cepat atau sebagai solusi untuk kueri yang melebihi batas sumber daya di Athena.

## Optimalkan bergabung
<a name="performance-tuning-optimizing-joins"></a>

Ada banyak strategi berbeda untuk mengeksekusi gabungan dalam mesin kueri terdistribusi. Dua yang paling umum adalah gabungan hash terdistribusi dan kueri dengan kondisi gabungan yang kompleks.

### Dalam gabungan hash terdistribusi, tempatkan tabel besar di sebelah kiri, tabel kecil di sebelah kanan
<a name="performance-tuning-distributed-hash-join"></a>

Jenis gabungan yang paling umum menggunakan perbandingan kesetaraan sebagai kondisi gabungan. Athena menjalankan jenis join ini sebagai gabungan hash terdistribusi.

Dalam gabungan hash terdistribusi, mesin membangun tabel pencarian (tabel hash) dari salah satu sisi gabungan. Sisi ini disebut *sisi build*. Catatan sisi build didistribusikan di seluruh node. Setiap node membangun tabel pencarian untuk subsetnya. Sisi lain dari gabungan, yang disebut *sisi probe*, kemudian dialirkan melalui node. Catatan dari sisi probe didistribusikan di atas node dengan cara yang sama seperti sisi build. Ini memungkinkan setiap node untuk melakukan gabungan dengan mencari catatan yang cocok di tabel pencariannya sendiri.

Ketika tabel pencarian yang dibuat dari sisi build gabungan tidak sesuai dengan memori, kueri bisa gagal. Bahkan jika ukuran total sisi build kurang dari memori yang tersedia, kueri dapat gagal jika distribusi catatan memiliki kemiringan yang signifikan. Dalam kasus ekstrim, semua catatan dapat memiliki nilai yang sama untuk kondisi gabungan dan harus masuk ke dalam memori pada satu node. Bahkan kueri dengan sedikit kemiringan dapat gagal jika satu set nilai dikirim ke node yang sama dan nilainya bertambah hingga lebih dari memori yang tersedia. Node memang memiliki kemampuan untuk menumpahkan catatan ke disk, tetapi tumpahan memperlambat eksekusi kueri dan tidak cukup untuk mencegah kueri gagal.

Athena mencoba menyusun ulang gabungan untuk menggunakan relasi yang lebih besar sebagai sisi probe, dan relasi yang lebih kecil sebagai sisi build. Namun, karena Athena tidak mengelola data dalam tabel, ia memiliki informasi yang terbatas dan sering harus mengasumsikan bahwa tabel pertama lebih besar dan tabel kedua lebih kecil.

Saat menulis gabungan dengan kondisi gabungan berbasis ekualitas, asumsikan bahwa tabel di sebelah kiri `JOIN` kata kunci adalah sisi probe dan tabel di sebelah kanan adalah sisi build. Pastikan bahwa tabel yang tepat, sisi build, adalah tabel yang lebih kecil. Jika tidak memungkinkan untuk membuat sisi build dari join cukup kecil agar sesuai dengan memori, pertimbangkan untuk menjalankan beberapa kueri yang menggabungkan subset tabel build.

### Gunakan EXPLOW untuk menganalisis kueri dengan gabungan kompleks
<a name="performance-tuning-other-join-types"></a>

Kueri dengan kondisi gabungan yang kompleks (misalnya, kueri yang menggunakan`LIKE`,`>`, atau operator lain), seringkali menuntut komputasi. Dalam kasus terburuk, setiap catatan dari satu sisi bergabung harus dibandingkan dengan setiap catatan di sisi lain dari bergabung. Karena waktu eksekusi tumbuh dengan kuadrat jumlah catatan, kueri tersebut berisiko melebihi waktu eksekusi maksimum.

Untuk mengetahui bagaimana Athena akan menjalankan kueri Anda sebelumnya, Anda dapat menggunakan pernyataan tersebut. `EXPLAIN` Untuk informasi selengkapnya, lihat [Menggunakan EXPLAIN dan EXPLAIN ANALYZE di Athena](athena-explain-statement.md) dan [Pahami Athena JELASKAN hasil pernyataan](athena-explain-statement-understanding.md).

## Kurangi ruang lingkup fungsi jendela, atau hapus
<a name="performance-tuning-optimizing-window-functions"></a>

Karena fungsi jendela adalah operasi intensif sumber daya, mereka dapat membuat kueri berjalan lambat atau bahkan gagal dengan pesan Sumber daya yang habis Kueri pada faktor skala ini. Fungsi jendela menyimpan semua catatan yang mereka operasikan dalam memori untuk menghitung hasilnya. Ketika jendela sangat besar, fungsi jendela bisa kehabisan memori.

Untuk memastikan kueri Anda berjalan dalam batas memori yang tersedia, kurangi ukuran jendela tempat fungsi jendela Anda beroperasi. Untuk melakukannya, Anda dapat menambahkan `PARTITIONED BY` klausa atau mempersempit cakupan klausa partisi yang ada.

### Gunakan fungsi non-jendela
<a name="performance-tuning-optimizing-window-functions-rewrite"></a>

Terkadang kueri dengan fungsi jendela dapat ditulis ulang tanpa fungsi jendela. Misalnya, alih-alih menggunakan `row_number` untuk menemukan `N` catatan teratas, Anda dapat menggunakan `ORDER BY` dan`LIMIT`. [https://trino.io/docs/current/functions/aggregate.html#min_by](https://trino.io/docs/current/functions/aggregate.html#min_by)

Misalnya, Anda memiliki kumpulan data dengan pembaruan dari sensor. Sensor secara berkala melaporkan status baterainya dan menyertakan beberapa metadata seperti lokasi. Jika Anda ingin mengetahui status baterai terakhir untuk setiap sensor dan lokasinya, Anda dapat menggunakan kueri ini:

```
SELECT sensor_id,
       arbitrary(location) AS location,
       max_by(battery_status, updated_at) AS battery_status
FROM sensor_readings
GROUP BY sensor_id
```

Karena metadata seperti lokasi sama untuk setiap catatan, Anda dapat menggunakan `arbitrary` fungsi untuk memilih nilai apa pun dari grup. 

Untuk mendapatkan status baterai terakhir, Anda dapat menggunakan `max_by` fungsinya. `max_by`Fungsi memilih nilai untuk kolom dari catatan di mana nilai maksimum kolom lain ditemukan. Dalam hal ini, ia mengembalikan status baterai untuk catatan dengan waktu pembaruan terakhir dalam grup. Kueri ini berjalan lebih cepat dan menggunakan lebih sedikit memori daripada kueri setara dengan fungsi jendela. 

## Optimalkan agregasi
<a name="performance-tuning-optimizing-aggregations"></a>

Ketika Athena melakukan agregasi, Athena mendistribusikan catatan di seluruh node pekerja menggunakan kolom dalam klausa. `GROUP BY` Untuk membuat tugas mencocokkan catatan ke grup seefisien mungkin, node berusaha menyimpan catatan dalam memori tetapi menumpahkannya ke disk jika perlu.

Ini juga merupakan ide yang baik untuk menghindari memasukkan kolom berlebihan dalam `GROUP BY` klausa. Karena lebih sedikit kolom membutuhkan lebih sedikit memori, kueri yang menggambarkan grup menggunakan lebih sedikit kolom lebih efisien. Kolom numerik juga menggunakan lebih sedikit memori daripada string. Misalnya, saat Anda menggabungkan kumpulan data yang memiliki ID kategori numerik dan nama kategori, gunakan hanya kolom ID kategori dalam klausa. `GROUP BY`

Terkadang kueri menyertakan kolom dalam `GROUP BY` klausa untuk mengatasi fakta bahwa kolom harus menjadi bagian dari `GROUP BY` klausa atau ekspresi agregat. Jika aturan ini tidak diikuti, Anda dapat menerima pesan kesalahan seperti berikut:

 EXPRESSION\$1NOT\$1AGGREGATE: baris 1:8: 'kategori' harus berupa ekspresi agregat atau muncul di klausa GROUP BY 

Untuk menghindari keharusan menambahkan kolom redundan ke `GROUP BY` klausa, Anda dapat menggunakan fungsi [arbitrer](https://trino.io/docs/current/functions/aggregate.html#arbitrary), seperti pada contoh berikut.

```
SELECT country_id,
       arbitrary(country_name) AS country_name,
       COUNT(*) AS city_count
FROM world_cities
GROUP BY country_id
```

`ARBITRARY`Fungsi mengembalikan nilai arbitrer dari grup. Fungsi ini berguna ketika Anda tahu semua catatan dalam grup memiliki nilai yang sama untuk kolom, tetapi nilainya tidak mengidentifikasi grup.

## Optimalkan kueri N teratas
<a name="performance-tuning-optimizing-top-n-queries"></a>

`ORDER BY`Klausa mengembalikan hasil query dalam urutan diurutkan. Athena menggunakan pengurutan terdistribusi untuk menjalankan operasi pengurutan secara paralel pada beberapa node.

Jika Anda tidak benar-benar membutuhkan hasil Anda untuk diurutkan, hindari menambahkan `ORDER BY` klausa. Selain itu, hindari `ORDER BY` menambahkan kueri batin jika tidak benar-benar diperlukan. Dalam banyak kasus, perencana kueri dapat menghapus penyortiran yang berlebihan, tetapi ini tidak dijamin. Pengecualian untuk aturan ini adalah jika kueri dalam melakukan `N` operasi teratas, seperti menemukan nilai terbaru, atau `N` paling umum. `N`

Ketika Athena melihat `ORDER BY` bersama`LIMIT`, ia memahami bahwa Anda menjalankan `N` kueri teratas dan menggunakan operasi khusus yang sesuai.

**catatan**  
Meskipun Athena juga sering dapat mendeteksi fungsi jendela seperti `row_number` itu menggunakan top`N`, kami merekomendasikan versi yang lebih sederhana yang menggunakan `ORDER BY` dan. `LIMIT` Untuk informasi selengkapnya, lihat [Kurangi ruang lingkup fungsi jendela, atau hapus](#performance-tuning-optimizing-window-functions).

## Sertakan hanya kolom yang diperlukan
<a name="performance-tuning-include-only-required-columns"></a>

Jika Anda tidak benar-benar membutuhkan kolom, jangan sertakan dalam kueri Anda. Semakin sedikit data yang harus diproses oleh kueri, semakin cepat ia akan berjalan. Ini mengurangi jumlah memori yang dibutuhkan dan jumlah data yang harus dikirim antar node. Jika Anda menggunakan format file kolumnar, mengurangi kolom angka juga mengurangi jumlah data yang dibaca dari Amazon S3.

Athena tidak memiliki batasan spesifik pada jumlah kolom dalam hasil, tetapi bagaimana kueri dijalankan membatasi kemungkinan ukuran gabungan kolom. Ukuran gabungan kolom mencakup nama dan jenisnya.

Misalnya, kesalahan berikut disebabkan oleh relasi yang melebihi batas ukuran untuk deskriptor relasi:

 GENERIC\$1INTERNAL\$1ERROR: io.airlift.bytecode. CompilationException 

Untuk mengatasi masalah ini, kurangi jumlah kolom dalam kueri, atau buat subkueri dan gunakan yang mengambil data dalam jumlah `JOIN` yang lebih kecil. Jika Anda memiliki kueri yang dilakukan `SELECT *` di kueri terluar, Anda harus mengubah `*` ke daftar hanya kolom yang Anda butuhkan.

## Optimalkan kueri dengan menggunakan perkiraan
<a name="performance-tuning-optimizing-queries-by-using-approximations"></a>

Athena memiliki dukungan untuk [fungsi agregat aproksimasi](https://trino.io/docs/current/functions/aggregate.html#appro) untuk menghitung nilai yang berbeda, nilai yang paling sering, persentil (termasuk perkiraan median), dan membuat histogram. Gunakan fungsi-fungsi ini setiap kali nilai yang tepat tidak diperlukan.

Tidak seperti `COUNT(DISTINCT col)` operasi, [approx\$1distinct](https://trino.io/docs/current/functions/aggregate.html#approx_distinct) menggunakan lebih sedikit memori dan berjalan lebih cepat. Demikian pula, menggunakan [numeric\$1histogram alih-alih [histogram](https://trino.io/docs/current/functions/aggregate.html#histogram)](https://trino.io/docs/current/functions/aggregate.html#numeric_histogram) menggunakan metode perkiraan dan karenanya lebih sedikit memori.

## Optimalkan LIKE
<a name="performance-tuning-optimizing-like"></a>

Anda dapat menggunakan `LIKE` untuk menemukan string yang cocok, tetapi dengan string panjang, ini adalah komputasi intensif. Fungsi [regexp\$1like](https://trino.io/docs/current/functions/regexp.html#regexp_like) dalam banyak kasus merupakan alternatif yang lebih cepat, dan juga memberikan lebih banyak fleksibilitas.

Seringkali Anda dapat mengoptimalkan pencarian dengan menambatkan substring yang Anda cari. Misalnya, jika Anda mencari awalan, jauh lebih baik menggunakan '*substr*%' daripada *substr* '% %'. Atau, jika Anda menggunakan`regexp_like`, '^ *substr* '.

## Gunakan UNION ALL alih-alih UNION
<a name="performance-tuning-use-union-all-instead-of-union"></a>

 `UNION ALL`dan `UNION` dua cara untuk menggabungkan hasil dari dua query menjadi satu hasil. `UNION ALL`menggabungkan catatan dari kueri pertama dengan yang kedua, dan `UNION` melakukan hal yang sama, tetapi juga menghapus duplikat. `UNION`perlu memproses semua catatan dan menemukan duplikat, yang merupakan memori dan komputasi intensif, tetapi `UNION ALL` merupakan operasi yang relatif cepat. Kecuali Anda perlu menghapus duplikat catatan, gunakan `UNION ALL` untuk kinerja terbaik.

## Gunakan UNLOAD untuk set hasil besar
<a name="performance-tuning-use-unload-for-large-result-sets"></a>

Ketika hasil kueri diharapkan besar (misalnya, puluhan ribu baris atau lebih), gunakan UNLOAD untuk mengekspor hasilnya. Dalam kebanyakan kasus, ini lebih cepat daripada menjalankan kueri biasa, dan menggunakan `UNLOAD` juga memberi Anda lebih banyak kontrol atas output.

Saat kueri selesai dijalankan, Athena menyimpan hasilnya sebagai satu file CSV yang tidak terkompresi di Amazon S3. Ini membutuhkan waktu lebih lama dari`UNLOAD`, bukan hanya karena hasilnya tidak terkompresi, tetapi juga karena operasi tidak dapat diparalelkan. Sebaliknya, `UNLOAD` menulis hasil langsung dari node pekerja dan memanfaatkan sepenuhnya paralelisme cluster komputasi. Selain itu, Anda dapat mengonfigurasi `UNLOAD` untuk menulis hasil dalam format terkompresi dan dalam format file lain seperti JSON dan Parket.

Untuk informasi selengkapnya, lihat [MEMBONGKAR](unload.md). 

## Gunakan CTAS atau Glue ETL untuk mewujudkan agregasi yang sering digunakan
<a name="performance-tuning-use-ctas-or-glue-etl-to-materialize-frequently-used-aggregations"></a>

'Mewujudkan' kueri adalah cara mempercepat kinerja kueri dengan menyimpan hasil kueri kompleks yang telah dihitung sebelumnya (misalnya, agregasi dan gabungan) untuk digunakan kembali dalam kueri berikutnya.

Jika banyak kueri Anda menyertakan gabungan dan agregasi yang sama, Anda dapat mewujudkan subquery umum sebagai tabel baru dan kemudian menjalankan kueri terhadap tabel tersebut. Anda dapat membuat tabel baru dengan[Buat tabel dari hasil kueri (CTAS)](ctas.md), atau alat ETL khusus seperti [Glue ETL](https://aws.amazon.com/glue).

Misalnya, Anda memiliki dasbor dengan widget yang menunjukkan aspek berbeda dari kumpulan data pesanan. Setiap widget memiliki kueri sendiri, tetapi semua kueri berbagi gabungan dan filter yang sama. Tabel pesanan digabungkan dengan tabel item baris, dan ada filter untuk ditampilkan hanya tiga bulan terakhir. Jika Anda mengidentifikasi fitur umum dari kueri ini, Anda dapat membuat tabel baru yang dapat digunakan widget. Ini mengurangi duplikasi dan meningkatkan kinerja. Kerugiannya adalah Anda harus memperbarui tabel baru.

## Gunakan kembali hasil kueri
<a name="performance-tuning-reuse-query-results"></a>

Biasanya kueri yang sama berjalan beberapa kali dalam durasi singkat. Misalnya, ini dapat terjadi ketika beberapa orang membuka dasbor data yang sama. Saat menjalankan kueri, Anda dapat memberi tahu Athena untuk menggunakan kembali hasil yang dihitung sebelumnya. Anda menentukan usia maksimum hasil yang akan digunakan kembali. Jika kueri yang sama sebelumnya dijalankan dalam jangka waktu tersebut, Athena mengembalikan hasil tersebut alih-alih menjalankan kueri lagi. *Untuk informasi selengkapnya, lihat di [Gunakan kembali hasil kueri di Athena](reusing-query-results.md) sini di *Panduan Pengguna Amazon Athena* dan [Kurangi biaya serta tingkatkan kinerja kueri dengan Penggunaan Kembali Hasil Kueri Amazon Athena](https://aws.amazon.com/blogs/big-data/reduce-cost-and-improve-query-performance-with-amazon-athena-query-result-reuse/) di AWS Blog Big Data.*

# Optimalkan data
<a name="performance-tuning-data-optimization-techniques"></a>

Kinerja tidak hanya bergantung pada kueri, tetapi juga penting pada bagaimana dataset Anda diatur dan pada format file dan kompresi yang digunakannya.

## Partisi data Anda
<a name="performance-tuning-partition-your-data"></a>

Partisi membagi tabel Anda menjadi beberapa bagian dan menyimpan data terkait bersama-sama berdasarkan properti seperti tanggal, negara, atau wilayah. Tombol partisi bertindak sebagai kolom virtual. Anda menentukan kunci partisi pada pembuatan tabel dan menggunakannya untuk memfilter kueri Anda. Saat Anda memfilter kolom kunci partisi, hanya data dari partisi yang cocok yang dibaca. Misalnya, jika kumpulan data Anda dipartisi berdasarkan tanggal dan kueri Anda memiliki filter yang hanya cocok minggu lalu, hanya data untuk minggu terakhir yang dibaca. Untuk informasi selengkapnya tentang partisi, lihat. [Partisi data Anda](partitions.md)

## Pilih kunci partisi yang akan mendukung kueri Anda
<a name="performance-tuning-pick-partition-keys-that-will-support-your-queries"></a>

Karena partisi memiliki dampak signifikan pada kinerja kueri, pastikan untuk mempertimbangkan bagaimana Anda mempartisi dengan hati-hati ketika Anda mendesain dataset dan tabel Anda. Memiliki terlalu banyak kunci partisi dapat mengakibatkan dataset terfragmentasi dengan terlalu banyak file dan file yang terlalu kecil. Sebaliknya, memiliki terlalu sedikit kunci partisi, atau tidak ada partisi sama sekali, mengarah ke kueri yang memindai lebih banyak data daripada yang diperlukan.

### Hindari mengoptimalkan kueri langka
<a name="performance-tuning-avoid-optimizing-for-rare-queries"></a>

Strategi yang baik adalah mengoptimalkan kueri yang paling umum dan menghindari pengoptimalan untuk kueri langka. Misalnya, jika kueri Anda melihat rentang waktu hari, jangan partisi berdasarkan jam, bahkan jika beberapa kueri memfilter ke tingkat itu. Jika data Anda memiliki kolom stempel waktu granular, kueri langka yang memfilter berdasarkan jam dapat menggunakan kolom stempel waktu. Bahkan jika kasus yang jarang memindai sedikit lebih banyak data daripada yang diperlukan, mengurangi kinerja keseluruhan demi kasus yang jarang terjadi biasanya bukan tradeoff yang baik.

Untuk mengurangi jumlah data yang harus dipindai oleh kueri, dan dengan demikian meningkatkan kinerja, gunakan format file kolumnar dan simpan catatan yang diurutkan. Alih-alih mempartisi berdasarkan jam, simpan catatan yang diurutkan berdasarkan stempel waktu. Untuk kueri pada jendela waktu yang lebih pendek, pengurutan berdasarkan stempel waktu hampir sama efisiennya dengan mempartisi berdasarkan jam. Selain itu, penyortiran berdasarkan stempel waktu biasanya tidak merusak kinerja kueri pada jendela waktu yang dihitung dalam beberapa hari. Untuk informasi selengkapnya, lihat [Gunakan format file kolumnar](#performance-tuning-use-columnar-file-formats).

Perhatikan bahwa kueri pada tabel dengan puluhan ribu partisi berkinerja lebih baik jika ada predikat pada semua kunci partisi. Ini adalah alasan lain untuk merancang skema partisi Anda untuk kueri yang paling umum. Untuk informasi selengkapnya, lihat [Partisi kueri berdasarkan kesetaraan](#performance-tuning-query-partitions-by-equality).

## Gunakan proyeksi partisi
<a name="performance-tuning-use-partition-projection"></a>

Proyeksi partisi adalah fitur Athena yang menyimpan informasi partisi tidak AWS Glue Data Catalog di, tetapi sebagai aturan dalam properti tabel di. AWS Glue Ketika Athena merencanakan kueri pada tabel yang dikonfigurasi dengan proyeksi partisi, Athena membaca aturan proyeksi partisi tabel. Athena menghitung partisi untuk dibaca dalam memori berdasarkan kueri dan aturan alih-alih mencari partisi di. AWS Glue Data Catalog

Selain menyederhanakan manajemen partisi, proyeksi partisi dapat meningkatkan kinerja untuk dataset yang memiliki sejumlah besar partisi. Ketika kueri menyertakan rentang alih-alih nilai spesifik untuk kunci partisi, mencari partisi yang cocok dalam katalog membutuhkan waktu lebih lama semakin banyak partisi yang ada. Dengan proyeksi partisi, filter dapat dihitung dalam memori tanpa masuk ke katalog, dan bisa jauh lebih cepat.

Dalam keadaan tertentu, proyeksi partisi dapat menghasilkan kinerja yang lebih buruk. Salah satu contoh terjadi ketika sebuah tabel “jarang.” Tabel jarang tidak memiliki data untuk setiap permutasi nilai kunci partisi yang dijelaskan oleh konfigurasi proyeksi partisi. Dengan tabel jarang, kumpulan partisi yang dihitung dari kueri dan konfigurasi proyeksi partisi semuanya terdaftar di Amazon S3 bahkan ketika mereka tidak memiliki data.

Bila Anda menggunakan proyeksi partisi, pastikan untuk menyertakan predikat pada semua kunci partisi. Persempit cakupan nilai yang mungkin untuk menghindari daftar Amazon S3 yang tidak perlu. Bayangkan kunci partisi yang memiliki kisaran satu juta nilai dan kueri yang tidak memiliki filter pada kunci partisi itu. Untuk menjalankan kueri, Athena harus melakukan setidaknya satu juta operasi daftar Amazon S3. Kueri tercepat ketika Anda menanyakan nilai tertentu, terlepas dari apakah Anda menggunakan proyeksi partisi atau menyimpan informasi partisi dalam katalog. Untuk informasi selengkapnya, lihat [Partisi kueri berdasarkan kesetaraan](#performance-tuning-query-partitions-by-equality).

Saat Anda mengonfigurasi tabel untuk proyeksi partisi, pastikan rentang yang Anda tentukan masuk akal. Jika kueri tidak menyertakan predikat pada kunci partisi, semua nilai dalam rentang untuk kunci tersebut digunakan. Jika kumpulan data Anda dibuat pada tanggal tertentu, gunakan tanggal tersebut sebagai titik awal untuk rentang tanggal apa pun. Gunakan `NOW` sebagai rentang akhir tanggal. Hindari rentang numerik yang memiliki sejumlah besar nilai, dan pertimbangkan untuk menggunakan tipe yang [disuntikkan](partition-projection-dynamic-id-partitioning.md#partition-projection-injection) sebagai gantinya.

Untuk informasi selengkapnya tentang proyek partisi, lihat [Gunakan proyeksi partisi dengan Amazon Athena](partition-projection.md).

## Gunakan indeks partisi
<a name="performance-tuning-use-partition-indexes"></a>

Indeks partisi adalah fitur dalam AWS Glue Data Catalog yang meningkatkan kinerja pencarian partisi untuk tabel yang memiliki sejumlah besar partisi.

Daftar partisi dalam katalog seperti tabel dalam database relasional. Tabel memiliki kolom untuk kunci partisi dan kolom tambahan untuk lokasi partisi. Saat Anda menanyakan tabel yang dipartisi, lokasi partisi dicari dengan memindai tabel ini.

Sama seperti database relasional, Anda dapat meningkatkan kinerja kueri dengan menambahkan indeks. Anda dapat menambahkan beberapa indeks untuk mendukung pola kueri yang berbeda. Indeks AWS Glue Data Catalog partisi mendukung operator kesetaraan dan perbandingan seperti`>`,`>=`, dan `<` dikombinasikan dengan `AND` operator. *Untuk informasi selengkapnya, lihat [Bekerja dengan indeks partisi AWS Glue di](https://docs.aws.amazon.com/glue/latest/dg/partition-indexes.html) *Panduan AWS Glue Pengembang* dan [Meningkatkan kinerja kueri Amazon Athena AWS Glue Data Catalog menggunakan indeks partisi](https://aws.amazon.com/blogs/big-data/improve-amazon-athena-query-performance-using-aws-glue-data-catalog-partition-indexes/) di AWS Blog Big Data.*

## Selalu gunakan STRING sebagai tipe untuk kunci partisi
<a name="performance-tuning-always-use-string-as-the-type-for-partition-keys"></a>

Saat Anda menanyakan kunci partisi, ingatlah bahwa Athena memerlukan kunci partisi untuk menjadi tipe untuk menekan pemfilteran partisi ke `STRING` dalam. AWS Glue Jika jumlah partisi tidak sedikit, menggunakan jenis lain dapat menyebabkan kinerja yang lebih buruk. Jika nilai kunci partisi Anda seperti tanggal atau seperti angka, lemparkan ke jenis yang sesuai dalam kueri Anda.

## Hapus partisi lama dan kosong
<a name="performance-tuning-remove-old-and-empty-partitions"></a>

Jika Anda menghapus data dari partisi di Amazon S3 (misalnya, dengan menggunakan siklus hidup Amazon [S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)), Anda juga harus menghapus entri partisi dari. AWS Glue Data Catalog Selama perencanaan kueri, partisi apa pun yang cocok dengan kueri terdaftar di Amazon S3. Jika Anda memiliki banyak partisi kosong, overhead daftar partisi ini dapat merugikan.

Juga, jika Anda memiliki ribuan partisi, pertimbangkan untuk menghapus metadata partisi untuk data lama yang tidak lagi relevan. Misalnya, jika kueri tidak pernah melihat data yang lebih tua dari setahun, Anda dapat menghapus metadata partisi secara berkala untuk partisi yang lebih lama. Jika jumlah partisi bertambah menjadi puluhan ribu, menghapus partisi yang tidak terpakai dapat mempercepat kueri yang tidak menyertakan predikat pada semua kunci partisi. Untuk informasi tentang menyertakan predikat pada semua kunci partisi dalam kueri Anda, lihat. [Partisi kueri berdasarkan kesetaraan](#performance-tuning-query-partitions-by-equality)

## Partisi kueri berdasarkan kesetaraan
<a name="performance-tuning-query-partitions-by-equality"></a>

Kueri yang menyertakan predikat kesetaraan pada semua kunci partisi berjalan lebih cepat karena metadata partisi dapat dimuat secara langsung. Hindari kueri di mana satu atau lebih kunci partisi tidak memiliki predikat, atau predikat memilih rentang nilai. Untuk kueri seperti itu, daftar semua partisi harus disaring untuk menemukan nilai yang cocok. Untuk sebagian besar tabel, overhead minimal, tetapi untuk tabel dengan puluhan ribu atau lebih partisi, overhead bisa menjadi signifikan.

Jika tidak mungkin untuk menulis ulang kueri Anda untuk memfilter partisi berdasarkan kesetaraan, Anda dapat mencoba proyeksi partisi. Untuk informasi selengkapnya, lihat [Gunakan proyeksi partisi](#performance-tuning-use-partition-projection).

## Hindari menggunakan MSCK REPAIR TABLE untuk pemeliharaan partisi
<a name="performance-tuning-avoid-using-msck-repair-table-for-partition-maintenance"></a>

Karena `MSCK REPAIR TABLE` bisa memakan waktu lama untuk dijalankan, hanya menambahkan partisi baru, dan tidak menghapus partisi lama, itu bukan cara yang efisien untuk mengelola partisi (lihat). [Pertimbangan dan batasan](msck-repair-table.md#msck-repair-table-considerations)

Partisi lebih baik dikelola secara manual menggunakan [AWS Glue Data Catalog APIs](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog.html),[ALTER TABLE ADD PARTITION](alter-table-add-partition.md), atau [AWS Glue crawler](https://docs.aws.amazon.com/glue/latest/dg/crawler-running.html). Sebagai alternatif, Anda dapat menggunakan proyeksi partisi, yang menghilangkan kebutuhan untuk mengelola partisi sama sekali. Untuk informasi selengkapnya, lihat [Gunakan proyeksi partisi dengan Amazon Athena](partition-projection.md).

## Validasi bahwa kueri Anda kompatibel dengan skema partisi
<a name="performance-tuning-validate-that-your-queries-are-compatible-with-the-partitioning-scheme"></a>

Anda dapat memeriksa terlebih dahulu partisi mana yang akan dipindai kueri dengan menggunakan [`EXPLAIN`](athena-explain-statement.md)pernyataan tersebut. Awali kueri Anda dengan `EXPLAIN` kata kunci, lalu cari fragmen sumber (misalnya,`Fragment 2 [SOURCE]`) untuk setiap tabel di dekat bagian bawah output. `EXPLAIN` Cari tugas di mana sisi kanan didefinisikan sebagai kunci partisi. Baris di bawahnya menyertakan daftar semua nilai untuk kunci partisi yang akan dipindai saat kueri dijalankan.

Misalnya, Anda memiliki kueri di atas meja dengan kunci `dt` partisi dan awalan kueri dengan`EXPLAIN`. Jika nilai dalam kueri adalah tanggal, dan filter memilih rentang tiga hari, `EXPLAIN` output mungkin terlihat seperti ini:

```
dt := dt:string:PARTITION_KEY
    :: [[2023-06-11], [2023-06-12], [2023-06-13]]
```

`EXPLAIN`Output menunjukkan bahwa perencana menemukan tiga nilai untuk kunci partisi ini yang cocok dengan kueri. Ini juga menunjukkan kepada Anda apa nilai-nilai itu. Untuk informasi lebih lanjut tentang penggunaan`EXPLAIN`, lihat [Menggunakan EXPLAIN dan EXPLAIN ANALYZE di Athena](athena-explain-statement.md) dan[Pahami Athena JELASKAN hasil pernyataan](athena-explain-statement-understanding.md).

## Gunakan format file kolumnar
<a name="performance-tuning-use-columnar-file-formats"></a>

Format file kolumnar seperti Parket dan ORC dirancang untuk beban kerja analitik terdistribusi. Mereka mengatur data berdasarkan kolom, bukan berdasarkan baris. Mengatur data dalam format kolumnar menawarkan keuntungan sebagai berikut:
+ Hanya kolom yang diperlukan untuk kueri yang dimuat
+ Jumlah keseluruhan data yang perlu dimuat berkurang
+ Nilai kolom disimpan bersama, sehingga data dapat dikompresi secara efisien 
+ File dapat berisi metadata yang memungkinkan mesin melewati pemuatan data yang tidak dibutuhkan

Sebagai contoh bagaimana metadata file dapat digunakan, metadata file dapat berisi informasi tentang nilai minimum dan maksimum dalam halaman data. Jika nilai yang ditanyakan tidak berada dalam rentang yang dicatat dalam metadata, halaman dapat dilewati.

Salah satu cara untuk menggunakan metadata ini untuk meningkatkan kinerja adalah memastikan bahwa data dalam file diurutkan. Misalnya, Anda memiliki kueri yang mencari catatan di mana `created_at` entri berada dalam rentang waktu yang singkat. Jika data Anda diurutkan berdasarkan `created_at` kolom, Athena dapat menggunakan nilai minimum dan maksimum dalam metadata file untuk melewati bagian file data yang tidak diperlukan.

Saat menggunakan format file kolumnar, pastikan file Anda tidak terlalu kecil. Seperti disebutkan dalam[Hindari memiliki terlalu banyak file](#performance-tuning-avoid-having-too-many-files), kumpulan data dengan banyak file kecil menyebabkan masalah kinerja. Hal ini terutama berlaku dengan format file kolumnar. Untuk file kecil, overhead format file kolumnar melebihi manfaatnya.

Perhatikan bahwa Parket dan ORC diatur secara internal oleh kelompok baris (Parket) dan garis (ORC). Ukuran default untuk grup baris adalah 128 MB, dan untuk garis, 64 MB. Jika Anda memiliki banyak kolom, Anda dapat meningkatkan grup baris dan ukuran garis untuk kinerja yang lebih baik. Mengurangi grup baris atau ukuran garis menjadi kurang dari nilai defaultnya tidak disarankan.

Untuk mengonversi format data lain ke Parket atau ORC, Anda dapat menggunakan AWS Glue ETL atau Athena. Untuk informasi selengkapnya, lihat [Konversi ke format kolumnar](columnar-storage.md#convert-to-columnar).

## Kompres data
<a name="performance-tuning-compress-data"></a>

Athena mendukung berbagai format kompresi. Menanyakan data terkompresi lebih cepat dan juga lebih murah karena Anda membayar jumlah byte yang dipindai sebelum dekompresi.

Format [gzip](https://www.gnu.org/software/gzip/) memberikan rasio kompresi yang baik dan memiliki berbagai dukungan di seluruh alat dan layanan lainnya. Format [zstd](https://facebook.github.io/zstd/) (Zstandard) adalah format kompresi yang lebih baru dengan keseimbangan yang baik antara kinerja dan rasio kompresi.

Saat mengompresi file teks seperti data JSON dan CSV, cobalah untuk mencapai keseimbangan antara jumlah file dan ukuran file. Sebagian besar format kompresi mengharuskan pembaca untuk membaca file dari awal. Ini berarti bahwa file teks terkompresi tidak dapat, secara umum, diproses secara paralel. File besar yang tidak terkompresi sering dibagi antara pekerja untuk mencapai paralelisme yang lebih tinggi selama pemrosesan kueri, tetapi ini tidak mungkin dilakukan dengan sebagian besar format kompresi.

Seperti dibahas dalam[Hindari memiliki terlalu banyak file](#performance-tuning-avoid-having-too-many-files), lebih baik tidak memiliki terlalu banyak file atau terlalu sedikit. Karena jumlah file adalah batas berapa banyak pekerja yang dapat memproses kueri, aturan ini terutama berlaku untuk file terkompresi.

Untuk informasi lebih lanjut tentang penggunaan kompresi di Athena, lihat. [Gunakan kompresi di Athena](compression-formats.md)

## Gunakan bucketing untuk pencarian pada tombol dengan kardinalitas tinggi
<a name="performance-tuning-use-bucketing-for-lookups-on-keys-with-high-cardinality"></a>

Bucketing adalah teknik untuk mendistribusikan catatan ke dalam file terpisah berdasarkan nilai salah satu kolom. Ini memastikan bahwa semua catatan dengan nilai yang sama akan berada dalam file yang sama. Bucketing berguna ketika Anda memiliki kunci dengan kardinalitas tinggi dan banyak kueri Anda mencari nilai spesifik dari kunci tersebut.

Misalnya, Anda menanyakan satu set catatan untuk pengguna tertentu. Jika data diselimuti oleh ID pengguna, Athena tahu sebelumnya file mana yang berisi catatan untuk ID tertentu dan file mana yang tidak. Hal ini memungkinkan Athena untuk membaca hanya file yang dapat berisi ID, sangat mengurangi jumlah data yang dibaca. Ini juga mengurangi waktu komputasi yang jika tidak akan diperlukan untuk mencari melalui data untuk ID tertentu.

### Hindari bucketing saat kueri sering mencari beberapa nilai dalam kolom
<a name="performance-tuning-disadvantages-of-bucketing"></a>

Bucketing kurang berharga ketika kueri sering mencari beberapa nilai di kolom yang dikandung oleh data. Semakin banyak nilai yang ditanyakan, semakin tinggi kemungkinan bahwa semua atau sebagian besar file harus dibaca. Misalnya, jika Anda memiliki tiga bucket, dan kueri mencari tiga nilai yang berbeda, semua file mungkin harus dibaca. Bucketing berfungsi paling baik saat kueri mencari nilai tunggal.

Untuk informasi selengkapnya, lihat [Gunakan partisi dan bucketing](ctas-partitioning-and-bucketing.md).

## Hindari memiliki terlalu banyak file
<a name="performance-tuning-avoid-having-too-many-files"></a>

Kumpulan data yang terdiri dari banyak file kecil menghasilkan kinerja kueri keseluruhan yang buruk. Ketika Athena merencanakan kueri, itu mencantumkan semua lokasi partisi, yang membutuhkan waktu. Menangani dan meminta setiap file juga memiliki overhead komputasi. Oleh karena itu, memuat satu file yang lebih besar dari Amazon S3 lebih cepat daripada memuat catatan yang sama dari banyak file yang lebih kecil.

Dalam kasus ekstrim, Anda mungkin mengalami batas layanan Amazon S3. Amazon S3 mendukung hingga 5.500 permintaan per detik untuk satu partisi indeks. Awalnya, bucket diperlakukan sebagai partisi indeks tunggal, tetapi ketika beban permintaan meningkat, itu dapat dibagi menjadi beberapa partisi indeks.

Amazon S3 melihat pola permintaan dan pemisahan berdasarkan awalan kunci. Jika dataset Anda terdiri dari ribuan file, permintaan yang berasal dari Athena dapat melebihi kuota permintaan. Bahkan dengan file yang lebih sedikit, kuota dapat dilampaui jika beberapa kueri bersamaan dibuat terhadap kumpulan data yang sama. Aplikasi lain yang mengakses file yang sama dapat berkontribusi pada jumlah total permintaan.

Ketika tingkat permintaan `limit` terlampaui, Amazon S3 mengembalikan kesalahan berikut. Kesalahan ini termasuk dalam informasi status untuk kueri di Athena.

 SlowDown: Harap kurangi tingkat permintaan Anda 

Untuk memecahkan masalah, mulailah dengan menentukan apakah kesalahan disebabkan oleh satu kueri atau oleh beberapa kueri yang membaca file yang sama. Jika yang terakhir, koordinasikan menjalankan kueri sehingga tidak berjalan pada saat yang sama. Untuk mencapai ini, tambahkan mekanisme antrian atau bahkan coba lagi di aplikasi Anda.

Jika menjalankan satu kueri memicu kesalahan, coba gabungkan file data atau modifikasi kueri untuk membaca lebih sedikit file. Waktu terbaik untuk menggabungkan file kecil adalah sebelum ditulis. Untuk melakukannya, pertimbangkan teknik-teknik berikut:
+ Ubah proses yang menulis file untuk menulis file yang lebih besar. Misalnya, Anda dapat menyangga catatan untuk waktu yang lebih lama sebelum ditulis. 
+ Letakkan file di lokasi di Amazon S3 dan gunakan alat seperti Glue ETL untuk menggabungkannya menjadi file yang lebih besar. Kemudian, pindahkan file yang lebih besar ke lokasi yang ditunjukkan tabel. Untuk informasi selengkapnya, lihat [Membaca file input dalam grup yang lebih besar](https://docs.aws.amazon.com/glue/latest/dg/grouping-input-files.html) di *Panduan AWS Glue Pengembang* dan [Bagaimana cara mengonfigurasi pekerjaan AWS Glue ETL untuk menampilkan file yang lebih besar?](https://repost.aws/knowledge-center/glue-job-output-large-files) di Pusat *Pengetahuan AWS RE: Post*.
+ Kurangi jumlah tombol partisi. Ketika Anda memiliki terlalu banyak kunci partisi, setiap partisi mungkin hanya memiliki beberapa catatan, menghasilkan jumlah file kecil yang berlebihan. Untuk informasi tentang memutuskan partisi mana yang akan dibuat, lihat[Pilih kunci partisi yang akan mendukung kueri Anda](#performance-tuning-pick-partition-keys-that-will-support-your-queries).

## Hindari hierarki penyimpanan tambahan di luar partisi
<a name="performance-tuning-avoid-additional-storage-hierarchies-beyond-the-partition"></a>

Untuk menghindari overhead perencanaan kueri, simpan file dalam struktur datar di setiap lokasi partisi. Jangan gunakan hierarki direktori tambahan apa pun.

Ketika Athena merencanakan kueri, Athena mencantumkan semua file di semua partisi yang cocok dengan kueri. Meskipun Amazon S3 tidak memiliki direktori sendiri, konvensi ini adalah untuk menafsirkan garis miring ke `/` depan sebagai pemisah direktori. Ketika Athena mencantumkan lokasi partisi, secara rekursif mencantumkan direktori apa pun yang ditemukannya. Ketika file dalam partisi diatur ke dalam hierarki, beberapa putaran daftar terjadi.

Ketika semua file berada langsung di lokasi partisi, sebagian besar waktu hanya satu operasi daftar yang harus dilakukan. Namun, beberapa operasi daftar sekuensial diperlukan jika Anda memiliki lebih dari 1000 file dalam partisi karena Amazon S3 hanya mengembalikan 1000 objek per operasi daftar. Memiliki lebih dari 1000 file dalam partisi juga dapat membuat masalah kinerja lain yang lebih serius. Untuk informasi selengkapnya, lihat [Hindari memiliki terlalu banyak file](#performance-tuning-avoid-having-too-many-files). 

## Gunakan SymlinkTextInputFormat hanya jika diperlukan
<a name="performance-tuning-use-symlinktextinputformat-only-when-necessary"></a>

Menggunakan [https://athena.guide/articles/stitching-tables-with-symlinktextinputformat](https://athena.guide/articles/stitching-tables-with-symlinktextinputformat)teknik ini bisa menjadi cara untuk mengatasi situasi ketika file untuk tabel tidak tertata rapi ke dalam partisi. Misalnya, symlink dapat berguna ketika semua file berada dalam awalan yang sama atau file dengan skema berbeda berada di lokasi yang sama.

Namun, menggunakan symlink menambahkan tingkat indirection ke eksekusi kueri. Tingkat indirection ini berdampak pada kinerja keseluruhan. File symlink harus dibaca, dan lokasi yang mereka tentukan harus terdaftar. Ini menambahkan beberapa perjalanan pulang pergi ke Amazon S3 yang tidak diperlukan oleh tabel Hive biasa. Kesimpulannya, Anda harus menggunakan `SymlinkTextInputFormat` hanya ketika opsi yang lebih baik seperti mengatur ulang file tidak tersedia.

# Gunakan format penyimpanan kolumnar
<a name="columnar-storage"></a>

[Apache Parquet](https://parquet.apache.org) dan [ORC](https://orc.apache.org/) adalah format penyimpanan kolumnar yang dioptimalkan untuk pengambilan data dengan cepat dan digunakan dalam aplikasi analitis. AWS 

Format penyimpanan kolom memiliki karakteristik berikut yang membuatnya cocok untuk digunakan dengan Athena: 
+ *Kompresi menurut kolom, dengan algoritma kompresi dipilih untuk tipe data kolom* untuk menghemat ruang penyimpanan di Amazon S3 dan mengurangi ruang disk dan I/O selama pemrosesan kueri.
+ *Predikat pushdown* di Parquet dan ORC memungkinkan kueri Athena untuk mengambil hanya blok yang dibutuhkan, meningkatkan performa kueri. Saat kueri Athena memperoleh nilai kolom tertentu dari data Anda, kueri Athena menggunakan statistik dari predikat blok data, seperti max/min nilai, untuk menentukan apakah akan membaca atau melewati blok. 
+ *Memisahkan data* di Parquet dan ORC memungkinkan Athena membagi pembacaan data ke beberapa pembaca dan meningkatkan paralelisme selama pemrosesan kueri. 

Untuk mengonversi data mentah yang ada dari format penyimpanan lain ke Parket atau ORC, Anda dapat menjalankan kueri [CREATE TABLE AS SELECT (CTAS)](ctas.md) di Athena dan menentukan format penyimpanan data sebagai Parket atau ORC, atau menggunakan Crawler. AWS Glue 

## Pilih antara Parket dan ORC
<a name="columnar-storage-choosing"></a>

Pilihan antara ORC (Optimized Row Columnar) dan Parquet tergantung pada kebutuhan penggunaan spesifik Anda.

Apache Parquet menyediakan skema kompresi dan pengkodean data yang efisien dan sangat ideal untuk menjalankan kueri kompleks dan memproses data dalam jumlah besar. Parket dioptimalkan untuk digunakan dengan [Apache Arrow](https://arrow.apache.org/), yang dapat menguntungkan jika Anda menggunakan alat yang terkait dengan Arrow.

ORC menyediakan cara yang efisien untuk menyimpan data Hive. File ORC seringkali lebih kecil dari file Parket, dan indeks ORC dapat membuat kueri lebih cepat. Selain itu, ORC mendukung tipe kompleks seperti struct, peta, dan daftar.

Saat memilih antara Parket dan ORC, pertimbangkan hal berikut:

**Kinerja kueri** — Karena Parket mendukung berbagai jenis kueri yang lebih luas, Parket mungkin menjadi pilihan yang lebih baik jika Anda berencana untuk melakukan kueri yang kompleks. 

**Tipe data yang kompleks** — Jika Anda menggunakan tipe data yang kompleks, ORC mungkin menjadi pilihan yang lebih baik karena mendukung berbagai tipe data kompleks yang lebih luas.

**Ukuran file** — Jika ruang disk menjadi perhatian, ORC biasanya menghasilkan file yang lebih kecil, yang dapat mengurangi biaya penyimpanan.

**Kompresi** - Parket dan ORC memberikan kompresi yang baik, tetapi format terbaik untuk Anda dapat bergantung pada kasus penggunaan spesifik Anda.

**Evolusi** — Parket dan ORC mendukung evolusi skema, yang berarti Anda dapat menambah, menghapus, atau memodifikasi kolom dari waktu ke waktu.

Baik Parket dan ORC adalah pilihan yang baik untuk aplikasi data besar, tetapi pertimbangkan persyaratan skenario Anda sebelum memilih. Anda mungkin ingin melakukan tolok ukur pada data dan kueri untuk melihat format mana yang berkinerja lebih baik untuk kasus penggunaan Anda.

## Konversi ke format kolumnar
<a name="convert-to-columnar"></a>

Opsi untuk dengan mudah mengonversi data sumber seperti JSON atau CSV ke dalam format kolom termasuk menggunakan kueri [CREATE TABLE AS](ctas.md) atau menjalankan pekerjaan di. AWS Glue
+ Anda dapat menggunakan kueri `CREATE TABLE AS` (CTAS) untuk mengonversi data menjadi Parket atau ORC dalam satu langkah. Sebagai contoh, lihat [Contoh: Menulis hasil kueri ke format yang berbeda](https://docs.aws.amazon.com/athena/latest/ug/ctas-examples.html#ctas-example-format) pada [Contoh kueri CTAS](ctas-examples.md) halaman.
+ Untuk informasi tentang menggunakan Athena untuk ETL untuk mengubah data dari CSV ke Parket, lihat. [Gunakan CTAS dan INSERT INTO untuk ETL dan analisis data](ctas-insert-into-etl.md)
+ Untuk informasi tentang menjalankan AWS Glue pekerjaan untuk mengubah data CSV menjadi Parket, lihat bagian “Ubah data dari format CSV ke Parket” di posting blog AWS Big Data [Membangun fondasi danau data dengan dan Amazon AWS Glue](https://aws.amazon.com/blogs/big-data/build-a-data-lake-foundation-with-aws-glue-and-amazon-s3/) S3. AWS Glue mendukung menggunakan teknik yang sama untuk mengonversi data CSV ke ORC, atau data JSON ke Parquet atau ORC.

# Gunakan partisi dan bucketing
<a name="ctas-partitioning-and-bucketing"></a>

Partisi dan bucketing adalah dua cara untuk mengurangi jumlah data Athena harus memindai ketika Anda menjalankan kueri. Partisi dan bucketing saling melengkapi dan dapat digunakan bersama. Mengurangi jumlah data yang dipindai mengarah pada peningkatan kinerja dan biaya yang lebih rendah. Untuk panduan umum tentang performa kueri Athena, lihat [10 kiat penyetelan performa terbaik untuk Amazon Athena](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/).

**Topics**
+ [Apa itu partisi?](ctas-partitioning-and-bucketing-what-is-partitioning.md)
+ [Apa itu bucketing?](ctas-partitioning-and-bucketing-what-is-bucketing.md)
+ [Sumber daya tambahan](ctas-partitioning-and-bucketing-additional-resources.md)

# Apa itu partisi?
<a name="ctas-partitioning-and-bucketing-what-is-partitioning"></a>

Partisi berarti mengatur data ke dalam direktori (atau “awalan”) di Amazon S3 berdasarkan properti data tertentu. Properti seperti itu disebut kunci partisi. Kunci partisi umum adalah tanggal atau satuan waktu lainnya seperti tahun atau bulan. Namun, dataset dapat dipartisi oleh lebih dari satu kunci. Misalnya, data tentang penjualan produk dapat dipartisi berdasarkan tanggal, kategori produk, dan pasar.

## Memutuskan cara partisi
<a name="ctas-partitioning-and-bucketing-deciding-how-to-partition"></a>

Kandidat yang baik untuk kunci partisi adalah properti yang selalu atau sering digunakan dalam kueri dan memiliki kardinalitas rendah. Ada trade-off antara memiliki terlalu banyak partisi dan memiliki terlalu sedikit. Dengan terlalu banyak partisi, peningkatan jumlah file menciptakan overhead. Ada juga beberapa overhead dari penyaringan partisi itu sendiri. Dengan terlalu sedikit partisi, kueri seringkali harus memindai lebih banyak data.

## Buat tabel yang dipartisi
<a name="ctas-partitioning-and-bucketing-creating-a-partitioned-table"></a>

Saat kumpulan data dipartisi, Anda dapat membuat tabel yang dipartisi di Athena. Tabel yang dipartisi adalah tabel yang memiliki kunci partisi. Saat Anda menggunakan`CREATE TABLE`, Anda menambahkan partisi ke tabel. Saat Anda menggunakan`CREATE TABLE AS`, partisi yang dibuat di Amazon S3 secara otomatis ditambahkan ke tabel.

Dalam sebuah `CREATE TABLE` pernyataan, Anda menentukan kunci partisi dalam `PARTITIONED BY (column_name data_type)` klausa. Dalam sebuah `CREATE TABLE AS` pernyataan, Anda menentukan kunci partisi dalam `WITH (partitioned_by = ARRAY['partition_key'])` klausa, atau `WITH (partitioning = ARRAY['partition_key'])` untuk tabel Iceberg. Untuk alasan kinerja, kunci partisi harus selalu bertipe`STRING`. Untuk informasi selengkapnya, lihat [Gunakan string sebagai tipe data untuk kunci partisi](data-types-timestamps.md#data-types-timestamps-partition-key-types).

Untuk detail tambahan `CREATE TABLE` dan `CREATE TABLE AS` sintaks, lihat [CREATE TABLE](create-table.md) dan[Properti tabel CTAS](create-table-as.md#ctas-table-properties).

## Tabel yang dipartisi kueri
<a name="ctas-partitioning-and-bucketing-querying-partitioned-tables"></a>

Saat Anda menanyakan tabel yang dipartisi, Athena menggunakan predikat dalam kueri untuk memfilter daftar partisi. Kemudian menggunakan lokasi partisi yang cocok untuk memproses file yang ditemukan. Athena dapat secara efisien mengurangi jumlah data yang dipindai hanya dengan tidak membaca data di partisi yang tidak cocok dengan predikat kueri.

### Contoh
<a name="ctas-partitioning-and-bucketing-partitioned-table-example-queries"></a>

Misalkan Anda memiliki tabel yang dipartisi oleh `sales_date` `product_category` dan dan ingin mengetahui total pendapatan selama seminggu dalam kategori tertentu. Anda menyertakan `sales_date` predikat pada `product_category` kolom dan untuk memastikan bahwa Athena hanya memindai jumlah minimum data, seperti pada contoh berikut.

```
SELECT SUM(amount) AS total_revenue 
FROM sales 
WHERE sales_date BETWEEN '2023-02-27' AND '2023-03-05' 
AND product_category = 'Toys'
```

Misalkan Anda memiliki kumpulan data yang dipartisi berdasarkan tanggal tetapi juga memiliki stempel waktu berbutir halus.

Dengan tabel Iceberg, Anda dapat mendeklarasikan kunci partisi untuk memiliki hubungan dengan kolom, tetapi dengan tabel Hive mesin kueri tidak memiliki pengetahuan tentang hubungan antara kolom dan kunci partisi. Untuk alasan ini, Anda harus menyertakan predikat pada kolom dan kunci partisi dalam kueri Anda untuk memastikan kueri tidak memindai lebih banyak data daripada yang diperlukan.

Misalnya, `sales` tabel pada contoh sebelumnya juga memiliki `sold_at` kolom tipe `TIMESTAMP` data. Jika Anda menginginkan pendapatan hanya untuk rentang waktu tertentu, Anda akan menulis kueri seperti ini:

```
SELECT SUM(amount) AS total_revenue 
FROM sales 
WHERE sales_date = '2023-02-28' 
AND sold_at BETWEEN TIMESTAMP '2023-02-28 10:00:00' AND TIMESTAMP '2023-02-28 12:00:00' 
AND product_category = 'Toys'
```

Untuk informasi selengkapnya tentang perbedaan antara menanyakan tabel Hive dan Iceberg, lihat. [Cara menulis kueri untuk bidang stempel waktu yang juga dipartisi waktu](data-types-timestamps.md#data-types-timestamps-how-to-write-queries-for-timestamp-fields-that-are-also-time-partitioned)

# Apa itu bucketing?
<a name="ctas-partitioning-and-bucketing-what-is-bucketing"></a>

Bucketing adalah cara untuk mengatur catatan dataset ke dalam kategori yang disebut bucket.

Arti bucket dan bucketing ini berbeda dari, dan jangan bingung dengan, ember Amazon S3. Dalam bucketing data, catatan yang memiliki nilai yang sama untuk properti masuk ke bucket yang sama. Catatan didistribusikan secara merata di antara ember sehingga setiap bucket memiliki jumlah data yang kira-kira sama.

Dalam praktiknya, bucket adalah file, dan fungsi hash menentukan bucket yang masuk ke dalam rekaman. Dataset yang diselimuti akan memiliki satu atau lebih file per bucket per partisi. Bucket yang dimiliki file dikodekan dalam nama file.

## Manfaat Bucketing
<a name="ctas-partitioning-and-bucketing-bucketing-benefits"></a>

Bucketing berguna ketika kumpulan data diselimuti oleh properti tertentu dan Anda ingin mengambil catatan di mana properti tersebut memiliki nilai tertentu. Karena datanya diselimuti, Athena dapat menggunakan nilainya untuk menentukan file mana yang akan dilihat. Misalnya, dataset diselimuti oleh `customer_id` dan Anda ingin menemukan semua catatan untuk pelanggan tertentu. Athena menentukan ember yang berisi catatan itu dan hanya membaca file di ember itu.

Kandidat yang baik untuk bucketing terjadi ketika Anda memiliki kolom yang memiliki kardinalitas tinggi (yaitu, memiliki banyak nilai berbeda), terdistribusi secara seragam, dan Anda sering meminta nilai tertentu.

**catatan**  
Athena tidak mendukung penggunaan `INSERT INTO` untuk menambahkan catatan baru ke tabel berember.

## Tipe data yang didukung untuk pemfilteran pada kolom berember
<a name="ctas-partitioning-and-bucketing-data-types-supported-for-filtering-on-bucketed-columns"></a>

Anda dapat menambahkan filter pada kolom berember dengan tipe data tertentu. Athena mendukung penyaringan pada kolom berember dengan tipe data berikut:
+ BOOLEAN
+ BYTE
+ DATE
+ DOUBLE
+ FLOAT
+ INT
+ LONG
+ SHORT
+ STRING
+ VARCHAR

## Dukungan Hive dan Spark
<a name="ctas-partitioning-and-bucketing-hive-and-spark-support"></a>

Mesin Athena versi 2 mendukung kumpulan data yang diselimuti menggunakan algoritma bucket Hive, dan mesin Athena versi 3 juga mendukung algoritma bucketing Apache Spark. Bucketing sarang adalah default. Jika kumpulan data Anda diselimuti menggunakan algoritma Spark, gunakan `TBLPROPERTIES` klausa untuk menyetel nilai properti. `bucketing_format` `spark`

**catatan**  
Athena memiliki batas 100 partisi dalam kueri `CREATE TABLE AS SELECT` ([CTAS](ctas.md)). Demikian pula, Anda hanya dapat menambahkan maksimum 100 partisi ke tabel tujuan dengan [INSERT INTO](insert-into.md) pernyataan.  
Jika Anda melebihi batasan ini, Anda mungkin menerima pesan kesalahan HIVE\$1TOO\$1MANY\$1OPEN\$1PARTITIONS: Melebihi batas 100 penulis terbuka untuk partisi/ember. Untuk mengatasi batasan ini, Anda dapat menggunakan pernyataan CTAS dan serangkaian `INSERT INTO` pernyataan yang membuat atau menyisipkan hingga 100 partisi masing-masing. Untuk informasi selengkapnya, lihat [Gunakan CTAS dan INSERT INTO untuk bekerja di sekitar batas partisi 100](ctas-insert-into.md).

## Bucketing CREATE TABLE contoh
<a name="ctas-partitioning-and-bucketing-bucketing-create-table-example"></a>

Untuk membuat tabel untuk dataset bucketed yang ada, gunakan klausa yang diikuti oleh `CLUSTERED BY (column)` klausa. `INTO N BUCKETS` `INTO N BUCKETS`Klausa menentukan jumlah ember yang dimasukkan ke dalam data.

Dalam `CREATE TABLE` contoh berikut, `sales` kumpulan data dimasukkan `customer_id` ke dalam 8 ember menggunakan algoritma Spark. `CREATE TABLE`Pernyataan menggunakan `TBLPROPERTIES` klausa `CLUSTERED BY` and untuk mengatur properti yang sesuai.

```
CREATE EXTERNAL TABLE sales (...) 
... 
CLUSTERED BY (`customer_id`) INTO 8 BUCKETS 
... 
TBLPROPERTIES ( 
  'bucketing_format' = 'spark' 
)
```

## Bucketing CREATE TABLE AS (CTAS) contoh
<a name="ctas-partitioning-and-bucketing-bucketing-create-table-as-example"></a>

Untuk menentukan ember dengan`CREATE TABLE AS`, gunakan `bucket_count` parameter `bucketed_by` dan, seperti pada contoh berikut.

```
CREATE TABLE sales 
WITH ( 
  ... 
  bucketed_by = ARRAY['customer_id'], 
  bucket_count = 8 
) 
AS SELECT ...
```

## Contoh kueri bucketing
<a name="ctas-partitioning-and-bucketing-bucketing-query-example"></a>

Contoh kueri berikut mencari nama-nama produk yang telah dibeli pelanggan tertentu selama seminggu.

```
SELECT DISTINCT product_name 
FROM sales 
WHERE sales_date BETWEEN '2023-02-27' AND '2023-03-05' 
AND customer_id = 'c123'
```

Jika tabel ini dipartisi oleh `sales_date` dan dikantongi oleh`customer_id`, Athena dapat menghitung ember tempat catatan pelanggan berada. Paling-paling, Athena membaca satu file per partisi.

# Sumber daya tambahan
<a name="ctas-partitioning-and-bucketing-additional-resources"></a>
+ Untuk `CREATE TABLE AS` contoh yang membuat tabel berember dan dipartisi, lihat [Contoh: Membuat](https://docs.aws.amazon.com/athena/latest/ug/ctas-examples.html#ctas-example-bucketed) tabel berember dan dipartisi.
+ [Untuk informasi tentang penerapan bucketing pada AWS data lake, termasuk menggunakan pernyataan Athena CTAS, AWS Glue untuk Apache Spark, dan bucketing untuk tabel Apache Iceberg, lihat posting AWS Blog Big Data Optimalkan tata letak data dengan menggunakan Amazon Athena dan untuk mempercepat kueri hilir. AWS Glue](https://aws.amazon.com/blogs/big-data/optimize-data-layout-by-bucketing-with-amazon-athena-and-aws-glue-to-accelerate-downstream-queries/) 

# Partisi data Anda
<a name="partitions"></a>

Dengan mempartisi data, Anda dapat membatasi jumlah data yang dipindai oleh setiap kueri, sehingga meningkatkan performa dan mengurangi biaya. Anda dapat mempartisi data Anda dengan kunci apa pun. Sebuah praktik umum adalah untuk partisi data berdasarkan waktu, sering mengarah ke skema partisi multi-level. Misalnya, pelanggan yang memiliki data datang setiap jam mungkin memutuskan untuk mempartisi menurut tahun, bulan, tanggal, dan jam. Pelanggan lain, yang memiliki data yang berasal dari berbagai sumber tetapi yang dimuat hanya sekali per hari, mungkin dipartisi oleh pengenal sumber data dan tanggal.

Athena dapat menggunakan partisi gaya Apache Hive, yang jalur datanya berisi pasangan nilai kunci yang dihubungkan dengan tanda yang sama (misalnya, atau). `country=us/...` `year=2021/month=01/day=26/...` Dengan demikian, jalur mencakup nama kunci partisi dan nilai yang diwakili oleh setiap jalur. Untuk memuat partisi Hive baru ke dalam tabel yang dipartisi, Anda dapat menggunakan [MSCK REPAIR TABLE](msck-repair-table.md) perintah, yang hanya berfungsi dengan partisi gaya Hive.

Athena juga dapat menggunakan skema partisi gaya non-sarang. Misalnya, CloudTrail log dan aliran pengiriman Firehose menggunakan komponen jalur terpisah untuk bagian tanggal seperti. `data/2021/01/26/us/6fc7845e.json` Untuk partisi gaya non-sarang seperti itu, Anda gunakan [ALTER TABLE ADD PARTITION](alter-table-add-partition.md) untuk menambahkan partisi secara manual.

## Pertimbangan dan batasan
<a name="partitions-considerations-limitations"></a>

Saat menggunakan partisi, ingatlah hal-hal berikut:
+ Jika Anda mengkueri tabel dipartisi dan menentukan partisi di `WHERE`, Athena memindai data hanya dari partisi itu.
+ Jika Anda mengeluarkan kueri terhadap bucket Amazon S3 dengan begitu banyak objek dan data yang tidak dipartisi, kueri tersebut dapat memengaruhi batas tingkat permintaan `GET` di Amazon S3 dan menyebabkan pengecualian Amazon S3. Untuk mencegah kesalahan, partisi data Anda. Selain itu, pertimbangkan untuk menyetel tingkat permintaan Amazon S3 Anda. Untuk informasi selengkapnya, lihat [Pola desain praktik terbaik: Mengoptimalkan kinerja Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/request-rate-perf-considerations.html).
+ Lokasi partisi yang akan digunakan dengan Athena harus menggunakan protokol `s3` (misalnya, `s3://amzn-s3-demo-bucket/folder/`). Di Athena, lokasi yang menggunakan protokol lain (contohnya,`s3a://amzn-s3-demo-bucket/folder/`) akan mengakibatkan kegagalan permintaan ketika`MSCK REPAIR TABLE`query dijalankan pada tabel yang mengandung. 
+ Pastikan bahwa jalur Amazon S3 dalam huruf kecil bukan camel case (misalnya, `userid` sebagai gantinya `userId`). Jika jalur S3 dalam kasus unta,`MSCK REPAIR TABLE`tidak menambahkan partisi ke AWS Glue Data Catalog. Untuk informasi selengkapnya, lihat [MSCK REPAIR TABLE](msck-repair-table.md).
+ Karena `MSCK REPAIR TABLE` memindai folder dan subfoldernya untuk menemukan skema partisi yang cocok, pastikan untuk menyimpan data untuk tabel terpisah dalam hierarki folder terpisah. Misalnya, Anda memiliki data untuk tabel 1 in `s3://amzn-s3-demo-bucket1` dan data untuk tabel 2 in`s3://amzn-s3-demo-bucket1/table-2-data`. Jika kedua tabel dipartisi oleh string, `MSCK REPAIR TABLE` akan menambahkan partisi untuk tabel 2 ke tabel 1. Untuk menghindari hal ini, gunakan struktur folder terpisah seperti `s3://amzn-s3-demo-bucket1` dan `s3://amzn-s3-demo-bucket2` sebagai gantinya. Perhatikan bahwa perilaku ini konsisten dengan Amazon EMR dan Apache Hive.
+ Jika Anda menggunakan AWS Glue Data Catalog with Athena, lihat [AWS Glue titik akhir dan kuota untuk kuota](https://docs.aws.amazon.com/general/latest/gr/glue.html) layanan pada partisi per akun dan per tabel. 
  + Meskipun Athena mendukung AWS Glue tabel kueri yang memiliki 10 juta partisi, Athena tidak dapat membaca lebih dari 1 juta partisi dalam satu pemindaian. Dalam skenario seperti itu, pengindeksan partisi dapat bermanfaat. Untuk informasi selengkapnya, lihat artikel AWS Big Data Blog [Meningkatkan kinerja kueri Amazon Athena menggunakan indeks AWS Glue Data Catalog partisi](https://aws.amazon.com/blogs/big-data/improve-amazon-athena-query-performance-using-aws-glue-data-catalog-partition-indexes/).
+ Untuk meminta peningkatan kuota partisi jika Anda menggunakan AWS Glue Data Catalog, kunjungi konsol [Service Quotas](https://console.aws.amazon.com/servicequotas/home?region=us-east-1#!/services/glue/quotas) untuk. AWS Glue

## Membuat dan memuat tabel dengan data yang dipartisi
<a name="partitions-creating-loading"></a>

Untuk membuat tabel yang menggunakan partisi, gunakan `PARTITIONED BY` klausa dalam pernyataan Anda[CREATE TABLE](create-table.md). `PARTITIONED BY`Klausa mendefinisikan kunci untuk mempartisi data, seperti pada contoh berikut. `LOCATION`Klausa menentukan lokasi root dari data yang dipartisi.

```
CREATE EXTERNAL TABLE users (
first string,
last string,
username string
)
PARTITIONED BY (id string)
STORED AS parquet
LOCATION 's3://amzn-s3-demo-bucket'
```

Setelah Anda membuat tabel, Anda memuat data di partisi untuk kueri. Untuk partisi gaya Hive, Anda lari. [MSCK REPAIR TABLE](msck-repair-table.md) Untuk partisi gaya non-sarang, Anda gunakan [ALTER TABLE ADD PARTITION](alter-table-add-partition.md) untuk menambahkan partisi secara manual.

## Siapkan gaya Hive dan data gaya non-Hive untuk kueri
<a name="partitions-preparing-data"></a>

Bagian berikut menunjukkan bagaimana mempersiapkan gaya Hive dan data gaya non-Hive untuk query di Athena.

### Skenario 1: Data disimpan di Amazon S3 dalam format Hive
<a name="scenario-1-data-already-partitioned-and-stored-on-s3-in-hive-format"></a>

Dalam skenario ini, partisi disimpan dalam folder terpisah di Amazon S3. Misalnya, berikut adalah daftar sebagian untuk contoh tayangan iklan yang dihasilkan oleh [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/ls.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/ls.html)perintah, yang mencantumkan objek S3 di bawah awalan yang ditentukan:

```
aws s3 ls s3://elasticmapreduce/samples/hive-ads/tables/impressions/

    PRE dt=2009-04-12-13-00/
    PRE dt=2009-04-12-13-05/
    PRE dt=2009-04-12-13-10/
    PRE dt=2009-04-12-13-15/
    PRE dt=2009-04-12-13-20/
    PRE dt=2009-04-12-14-00/
    PRE dt=2009-04-12-14-05/
    PRE dt=2009-04-12-14-10/
    PRE dt=2009-04-12-14-15/
    PRE dt=2009-04-12-14-20/
    PRE dt=2009-04-12-15-00/
    PRE dt=2009-04-12-15-05/
```

Di sini, log disimpan dengan nama kolom (dt) ditetapkan sama dengan tanggal, jam, dan kenaikan menit. Saat Anda memberikan DDL dengan lokasi folder induk, skema, dan nama kolom dipartisi, Athena dapat mengkueri data dalam subfolder tersebut.

#### Buat tabel
<a name="creating-a-table"></a>

Untuk membuat tabel dari data ini, buat partisi bersama 'dt' seperti pada pernyataan Athena DDL berikut:

```
CREATE EXTERNAL TABLE impressions (
    requestBeginTime string,
    adId string,
    impressionId string,
    referrer string,
    userAgent string,
    userCookie string,
    ip string,
    number string,
    processId string,
    browserCookie string,
    requestEndTime string,
    timers struct<modelLookup:string, requestTime:string>,
    threadId string,
    hostname string,
    sessionId string)
PARTITIONED BY (dt string)
ROW FORMAT  serde 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION 's3://elasticmapreduce/samples/hive-ads/tables/impressions/' ;
```

Tabel ini menggunakan Hive asli JSON serializer-deserializer untuk membaca data JSON yang disimpan di Amazon S3. Untuk informasi selengkapnya tentang format yang didukung, lihat [Pilih SerDe untuk data Anda](supported-serdes.md).

#### Jalankan MSCK REPAIR TABLE
<a name="run-msck-repair-table"></a>

Setelah Anda menjalankan `CREATE TABLE` kueri, jalankan `MSCK REPAIR TABLE` perintah di editor kueri Athena untuk memuat partisi, seperti pada contoh berikut.

```
MSCK REPAIR TABLE impressions
```

Setelah Anda menjalankan perintah ini, data siap untuk query.

#### Kueri datanya
<a name="query-the-data"></a>

Kueri data dari tabel tayangan menggunakan kolom partisi. Inilah contohnya:

```
SELECT dt,impressionid FROM impressions WHERE dt<'2009-04-12-14-00' and dt>='2009-04-12-13-00' ORDER BY dt DESC LIMIT 100
```

Kueri ini harus menunjukkan hasil yang mirip dengan berikut ini:

```
2009-04-12-13-20    ap3HcVKAWfXtgIPu6WpuUfAfL0DQEc
2009-04-12-13-20    17uchtodoS9kdeQP1x0XThKl5IuRsV
2009-04-12-13-20    JOUf1SCtRwviGw8sVcghqE5h0nkgtp
2009-04-12-13-20    NQ2XP0J0dvVbCXJ0pb4XvqJ5A4QxxH
2009-04-12-13-20    fFAItiBMsgqro9kRdIwbeX60SROaxr
2009-04-12-13-20    V4og4R9W6G3QjHHwF7gI1cSqig5D1G
2009-04-12-13-20    hPEPtBwk45msmwWTxPVVo1kVu4v11b
2009-04-12-13-20    v0SkfxegheD90gp31UCr6FplnKpx6i
2009-04-12-13-20    1iD9odVgOIi4QWkwHMcOhmwTkWDKfj
2009-04-12-13-20    b31tJiIA25CK8eDHQrHnbcknfSndUk
```

### Skenario 2: Data tidak dipartisi dalam format Hive
<a name="scenario-2-data-is-not-partitioned"></a>

Dalam contoh berikut, `aws s3 ls` perintah menunjukkan log [ELB](elasticloadbalancer-classic-logs.md) yang disimpan di Amazon S3. Perhatikan bagaimana tata letak data tidak menggunakan `key=value` pasangan dan oleh karena itu tidak dalam format Hive. (`--recursive`Opsi untuk `aws s3 ls` perintah menentukan bahwa semua file atau objek di bawah direktori atau awalan yang ditentukan dicantumkan.)

```
aws s3 ls s3://athena-examples-myregion/elb/plaintext/ --recursive

2016-11-23 17:54:46   11789573 elb/plaintext/2015/01/01/part-r-00000-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:46    8776899 elb/plaintext/2015/01/01/part-r-00001-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:46    9309800 elb/plaintext/2015/01/01/part-r-00002-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:47    9412570 elb/plaintext/2015/01/01/part-r-00003-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:47   10725938 elb/plaintext/2015/01/01/part-r-00004-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:46    9439710 elb/plaintext/2015/01/01/part-r-00005-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:47          0 elb/plaintext/2015/01/01_$folder$
2016-11-23 17:54:47    9012723 elb/plaintext/2015/01/02/part-r-00006-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:47    7571816 elb/plaintext/2015/01/02/part-r-00007-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:47    9673393 elb/plaintext/2015/01/02/part-r-00008-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:48   11979218 elb/plaintext/2015/01/02/part-r-00009-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:48    9546833 elb/plaintext/2015/01/02/part-r-00010-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:48   10960865 elb/plaintext/2015/01/02/part-r-00011-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:48          0 elb/plaintext/2015/01/02_$folder$
2016-11-23 17:54:48   11360522 elb/plaintext/2015/01/03/part-r-00012-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:48   11211291 elb/plaintext/2015/01/03/part-r-00013-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:48    8633768 elb/plaintext/2015/01/03/part-r-00014-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:49   11891626 elb/plaintext/2015/01/03/part-r-00015-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:49    9173813 elb/plaintext/2015/01/03/part-r-00016-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:49   11899582 elb/plaintext/2015/01/03/part-r-00017-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:49          0 elb/plaintext/2015/01/03_$folder$
2016-11-23 17:54:50    8612843 elb/plaintext/2015/01/04/part-r-00018-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:50   10731284 elb/plaintext/2015/01/04/part-r-00019-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:50    9984735 elb/plaintext/2015/01/04/part-r-00020-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:50    9290089 elb/plaintext/2015/01/04/part-r-00021-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:50    7896339 elb/plaintext/2015/01/04/part-r-00022-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51    8321364 elb/plaintext/2015/01/04/part-r-00023-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51          0 elb/plaintext/2015/01/04_$folder$
2016-11-23 17:54:51    7641062 elb/plaintext/2015/01/05/part-r-00024-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51   10253377 elb/plaintext/2015/01/05/part-r-00025-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51    8502765 elb/plaintext/2015/01/05/part-r-00026-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51   11518464 elb/plaintext/2015/01/05/part-r-00027-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51    7945189 elb/plaintext/2015/01/05/part-r-00028-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51    7864475 elb/plaintext/2015/01/05/part-r-00029-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51          0 elb/plaintext/2015/01/05_$folder$
2016-11-23 17:54:51   11342140 elb/plaintext/2015/01/06/part-r-00030-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:51    8063755 elb/plaintext/2015/01/06/part-r-00031-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:52    9387508 elb/plaintext/2015/01/06/part-r-00032-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:52    9732343 elb/plaintext/2015/01/06/part-r-00033-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:52   11510326 elb/plaintext/2015/01/06/part-r-00034-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:52    9148117 elb/plaintext/2015/01/06/part-r-00035-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:52          0 elb/plaintext/2015/01/06_$folder$
2016-11-23 17:54:52    8402024 elb/plaintext/2015/01/07/part-r-00036-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:52    8282860 elb/plaintext/2015/01/07/part-r-00037-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:52   11575283 elb/plaintext/2015/01/07/part-r-00038-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:53    8149059 elb/plaintext/2015/01/07/part-r-00039-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:53   10037269 elb/plaintext/2015/01/07/part-r-00040-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:53   10019678 elb/plaintext/2015/01/07/part-r-00041-ce65fca5-d6c6-40e6-b1f9-190cc4f93814.txt
2016-11-23 17:54:53          0 elb/plaintext/2015/01/07_$folder$
2016-11-23 17:54:53          0 elb/plaintext/2015/01_$folder$
2016-11-23 17:54:53          0 elb/plaintext/2015_$folder$
```

#### Jalankan ALTER TABLE ADD PARTITION
<a name="run-alter-table-add-partition"></a>

Karena data tidak dalam format Hive, Anda tidak dapat menggunakan `MSCK REPAIR TABLE` perintah untuk menambahkan partisi ke tabel setelah Anda membuatnya. Sebagai gantinya, Anda dapat menggunakan [ALTER TABLE ADD PARTITION](alter-table-add-partition.md) perintah untuk menambahkan setiap partisi secara manual. Misalnya, untuk memuat data di s3://athena-examples - *myregion* /elb/plaintext/2015/01/01/, Anda dapat menjalankan kueri berikut. Perhatikan bahwa kolom partisi terpisah untuk setiap folder Amazon S3 tidak diperlukan, dan bahwa nilai kunci partisi dapat berbeda dari kunci Amazon S3.

```
ALTER TABLE elb_logs_raw_native_part ADD PARTITION (dt='2015-01-01') location 's3://athena-examples-us-west-1/elb/plaintext/2015/01/01/'
```

Jika partisi sudah ada, Anda menerima kesalahan Partisi sudah ada. Untuk menghindari kesalahan ini, Anda dapat menggunakan klausa `IF NOT EXISTS`. Untuk informasi selengkapnya, lihat [ALTER TABLE ADD PARTITION](alter-table-add-partition.md). Untuk menghapus partisi, Anda dapat menggunakan[ALTER TABLE DROP PARTITION](alter-table-drop-partition.md). 

## Pertimbangkan proyeksi partisi
<a name="partitions-partition-projection"></a>

Untuk menghindari keharusan mengelola partisi sendiri, Anda dapat menggunakan proyeksi partisi. Proyeksi partisi adalah opsi untuk tabel yang sangat dipartisi yang strukturnya diketahui sebelumnya. Dalam proyeksi partisi, nilai partisi dan lokasi dihitung dari properti tabel yang Anda konfigurasikan daripada dibaca dari repositori metadata. Karena perhitungan dalam memori lebih cepat daripada pencarian jarak jauh, penggunaan proyeksi partisi dapat secara signifikan mengurangi runtime kueri. 

Untuk informasi selengkapnya, lihat [Gunakan proyeksi partisi dengan Amazon Athena](partition-projection.md).

## Sumber daya tambahan
<a name="partitions-additional-resources"></a>
+ Untuk informasi tentang opsi partisi untuk data Firehose, lihat. [Contoh Amazon Data Firehose](partition-projection-kinesis-firehose-example.md)
+ Anda dapat mengotomatiskan penambahan partisi dengan menggunakan [driver JDBC](connect-with-jdbc.md). 
+ Anda dapat menggunakan CTAS dan INSERT INTO untuk partisi set data. Lihat informasi yang lebih lengkap di [Gunakan CTAS dan INSERT INTO untuk ETL dan analisis data](ctas-insert-into-etl.md).

# Gunakan proyeksi partisi dengan Amazon Athena
<a name="partition-projection"></a>

Anda dapat menggunakan proyeksi partisi di Athena untuk mempercepat pemrosesan kueri tabel yang sangat dipartisi dan mengotomatiskan manajemen partisi.

Dalam proyeksi partisi, Athena menghitung nilai partisi dan lokasi menggunakan properti tabel yang Anda konfigurasikan langsung pada tabel Anda. AWS Glue Properti tabel memungkinkan Athena untuk 'memproyeksikan', atau menentukan, informasi partisi yang diperlukan alih-alih harus melakukan pencarian metadata yang lebih memakan waktu di. AWS Glue Data Catalog Karena operasi dalam memori sering lebih cepat daripada operasi jarak jauh, proyeksi partisi dapat mengurangi runtime kueri terhadap tabel yang sangat dipartisi. Tergantung pada karakteristik spesifik dari kueri dan data yang mendasari, partisi proyeksi dapat secara signifikan mengurangi permintaan runtime untuk mengkueri yang dibatasi pada partisi metadata pengambilan.

## Memahami pemangkasan partisi vs. proyeksi partisi
<a name="partition-projection-pruning-vs-projection"></a>

Pemangkasan partisi mengumpulkan metadata dan “plum” untuk hanya partisi yang berlaku untuk permintaan Anda. Ini sering mempercepat kueri. Athena menggunakan pemangkasan partisi untuk semua tabel dengan kolom partisi, termasuk tabel yang dikonfigurasi untuk proyeksi partisi.

Biasanya, saat memproses kueri, Athena menelepon sebelum melakukan pemangkasan AWS Glue Data Catalog partisi. `GetPartitions` Jika tabel memiliki sejumlah besar partisi, menggunakan`GetPartitions`dapat mempengaruhi performa negatif. Untuk menghindarinya, Anda bisa menggunakan proyeksi partisi. Proyeksi partisi memungkinkan Athena untuk menghindari panggilan`GetPartitions`karena konfigurasi proyeksi partisi memberikan Athena semua informasi yang diperlukan untuk membangun partisi itu sendiri.

## Cara menggunakan proyeksi partisi
<a name="partition-projection-using"></a>

Untuk menggunakan proyeksi partisi, Anda menentukan rentang nilai partisi dan jenis proyeksi untuk setiap kolom partisi dalam properti tabel di AWS Glue Data Catalog atau di metastore [Hive eksternal](connect-to-data-source-hive.md) Anda. Properti kustom ini di atas tabel memungkinkan Athena untuk mengetahui pola partisi apa yang diharapkan saat menjalankan kueri di atas tabel. Selama eksekusi kueri, Athena menggunakan informasi ini untuk memproyeksikan nilai partisi alih-alih mengambilnya dari metastore Hive AWS Glue Data Catalog atau eksternal. Ini tidak hanya mengurangi waktu eksekusi kueri tetapi juga mengotomatiskan manajemen partisi karena menghilangkan kebutuhan untuk secara manual membuat partisi di Athena, AWS Glue, atau metastore Hive eksternal Anda.

**penting**  
Mengaktifkan proyeksi partisi pada tabel menyebabkan Athena mengabaikan metadata partisi apa pun yang terdaftar ke tabel di metastore or Hive. AWS Glue Data Catalog 

## Beberapa kasus penggunaan
<a name="partition-projection-use-cases"></a>

Skenario tempat proyeksi partisi berguna meliputi:
+ Kueri terhadap tabel yang sangat dipartisi tidak lengkap secepat yang Anda inginkan.
+ Anda secara teratur menambahkan partisi ke tabel sebagai partisi tanggal atau waktu baru dibuat dalam data Anda. Dengan proyeksi partisi, Anda mengonfigurasi rentang tanggal relatif yang dapat digunakan sebagai data baru tiba. 
+ Anda memiliki data yang sangat dipartisi di Amazon S3. Data tidak praktis untuk dimodelkan di metastore Anda AWS Glue Data Catalog atau Hive, dan kueri Anda hanya membaca sebagian kecil saja.

### Struktur partisi yang dapat diproyeksikan
<a name="partition-projection-known-data-structures"></a>

Proyeksi partisi paling mudah dikonfigurasi saat partisi Anda mengikuti pola yang dapat diprediksi seperti, tetapi tidak terbatas pada, berikut:
+ **Bilangan bulat**— Setiap urutan kontinu bilangan bulat seperti`[1, 2, 3, 4, ..., 1000]`atau`[0500, 0550, 0600, ..., 2500]`.
+ **Tanggal**— Setiap urutan kontinu tanggal atau datetime seperti`[20200101, 20200102, ..., 20201231]`atau`[1-1-2020 00:00:00, 1-1-2020 01:00:00, ..., 12-31-2020 23:00:00]`.
+ **Nilai yang disebutkan - Satu set terbatas dari nilai** yang disebutkan seperti kode bandara atau. Wilayah AWS
+ **Layanan AWS log** — Layanan AWS log biasanya memiliki struktur yang diketahui yang skema partisinya dapat Anda tentukan AWS Glue dan karena itu Athena dapat digunakan untuk proyeksi partisi.

### Cara menyesuaikan template jalur partisi
<a name="partition-projection-custom-s3-storage-locations"></a>

Secara default, Athena membangun lokasi partisi menggunakan formulir`s3://amzn-s3-demo-bucket/<table-root>/partition-col-1=<partition-col-1-val>/partition-col-2=<partition-col-2-val>/`, tetapi jika data Anda diatur secara berbeda, Athena menawarkan mekanisme untuk menyesuaikan templat jalur ini. Untuk langkah, lihat [Cara menentukan lokasi penyimpanan S3 kustom](partition-projection-setting-up.md#partition-projection-specifying-custom-s3-storage-locations).

## Pertimbangan dan batasan
<a name="partition-projection-considerations-and-limitations"></a>

Pertimbangan berikut berlaku untuk instans Mac:
+ Proyeksi partisi menghilangkan kebutuhan untuk menentukan partisi secara manual di AWS Glue atau metastore Hive eksternal.
+ Saat Anda mengaktifkan proyeksi partisi di atas meja, Athena mengabaikan metadata partisi apa pun di metastore Hive atau eksternal AWS Glue Data Catalog untuk tabel itu.
+ Jika partisi yang diproyeksikan tidak ada di Amazon S3, Athena masih akan memproyeksikan partisi. Athena tidak membuang kesalahan, tapi tidak ada data dikembalikan. Namun, jika terlalu banyak partisi Anda kosong, kinerja bisa lebih lambat dibandingkan dengan AWS Glue partisi tradisional. Jika lebih dari separuh partisi yang diproyeksikan kosong, sebaiknya gunakan partisi tradisional.
+ Kueri untuk nilai-nilai yang berada di luar batas rentang yang ditetapkan untuk proyeksi partisi tidak mengembalikan kesalahan. Sebaliknya, kueri berjalan, tetapi kembali nol baris. Misalnya, jika Anda memiliki data terkait waktu yang dimulai pada tahun 2020 dan didefinisikan sebagai`'projection.timestamp.range'='2020/01/01,NOW'`, kueri seperti`SELECT * FROM table-name WHERE timestamp = '2019/02/02'`akan selesai dengan sukses, tapi kembali nol baris.
+ Proyeksi partisi hanya dapat digunakan jika tabel dipertanyakan melalui Athena. Jika tabel yang sama dibaca melalui layanan lain seperti Amazon Redshift Spectrum, Athena for Spark, atau Amazon EMR, metadata partisi standar digunakan.
+ Karena proyeksi partisi adalah fitur DML-only, `SHOW PARTITIONS` tidak mencantumkan partisi yang diproyeksikan oleh Athena tetapi tidak terdaftar dalam katalog atau metastore Hive eksternal. AWS Glue 
+ Athena tidak menggunakan properti tabel tampilan sebagai konfigurasi untuk proyeksi partisi. Untuk mengatasi keterbatasan ini, mengonfigurasi dan mengaktifkan partisi proyeksi dalam tabel properti untuk tabel yang tampilan referensi.

## Video
<a name="partition-projection-video"></a>

Video berikut menunjukkan bagaimana menggunakan proyeksi partisi untuk meningkatkan performa kueri Anda di Athena.

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


**Topics**
+ [Memahami pemangkasan partisi vs. proyeksi partisi](#partition-projection-pruning-vs-projection)
+ [Cara menggunakan proyeksi partisi](#partition-projection-using)
+ [Beberapa kasus penggunaan](#partition-projection-use-cases)
+ [Pertimbangan dan batasan](#partition-projection-considerations-and-limitations)
+ [Video](#partition-projection-video)
+ [Mengatur proyeksi partisi](partition-projection-setting-up.md)
+ [Jenis yang didukung untuk proyeksi partisi](partition-projection-supported-types.md)
+ [Gunakan partisi ID dinamis](partition-projection-dynamic-id-partitioning.md)
+ [Contoh Amazon Data Firehose](partition-projection-kinesis-firehose-example.md)

# Mengatur proyeksi partisi
<a name="partition-projection-setting-up"></a>

Menyiapkan proyeksi partisi di properti tabel adalah proses dua langkah:

1. Tentukan rentang data dan pola yang relevan untuk setiap kolom partisi, atau gunakan templat kustom.

1. Aktifkan proyeksi partisi untuk tabel.

**catatan**  
Sebelum Anda menambahkan properti proyeksi partisi ke tabel yang ada, kolom partisi yang Anda siapkan properti proyeksi partisi harus sudah ada dalam skema tabel. Jika kolom partisi belum ada, Anda harus menambahkan kolom partisi ke tabel yang ada secara manual. AWS Glue tidak melakukan langkah ini untuk Anda secara otomatis. 

Bagian ini menunjukkan cara mengatur properti tabel untuk AWS Glue. Untuk mengaturnya, Anda dapat menggunakan AWS Glue konsol, [CREATE TABLE](create-table.md) kueri Athena, atau operasi. [AWS Glue API](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api.html) Prosedur berikut menunjukkan cara mengatur properti di AWS Glue konsol.

**Untuk mengkonfigurasi dan mengaktifkan proyeksi partisi menggunakan konsol AWS Glue**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Pilih tab **Tabel**.

   Pada tab **Tabel**, Anda dapat mengedit tabel yang ada, atau memilih **Tambahkan tabel** untuk membuat yang baru. Untuk informasi tentang menambahkan tabel secara manual atau dengan crawler, lihat [Bekerja dengan tabel di AWS Glue konsol di](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html) *Panduan AWS Glue Pengembang*.

1. Dalam daftar tabel, pilih tautan untuk tabel yang ingin Anda edit.  
![\[Di AWS Glue konsol, pilih tabel untuk diedit.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/partition-projection-1.png)

1. Pilih **Tindakan**, **Edit tabel**.

1. Pada halaman **Edit tabel**, di bagian **properti Tabel**, untuk setiap kolom yang dipartisi, tambahkan pasangan kunci-nilai berikut:

   1. Untuk **Kunci**, tambahkan`projection.columnName.type`.

   1. Untuk **Nilai**, tambahkan salah satu tipe yang didukung: `enum`, `integer`, `date`, atau `injected`. Untuk informasi selengkapnya, lihat [Jenis yang didukung untuk proyeksi partisi](partition-projection-supported-types.md).

1. Mengikuti petunjuk di [Jenis yang didukung untuk proyeksi partisi](partition-projection-supported-types.md) , tambahkan pasangan kunci-nilai tambahan sesuai dengan kebutuhan konfigurasi Anda.

   Contoh konfigurasi tabel berikut mengkonfigurasi `year` kolom untuk proyeksi partisi, membatasi nilai-nilai yang dapat dikembalikan ke rentang dari 2010 hingga 2016.  
![\[Mengonfigurasi proyeksi partisi untuk kolom partisi di poperti tabel konsol AWS Glue .\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/partition-projection-3.png)

1. Tambahkan pasangan nilai kunci untuk mengaktifkan proyeksi partisi. Untuk **Kunci**, masukkan `projection.enabled`, dan untuk **Nilai**, masukkan `true`.
**catatan**  
Anda dapat menonaktifkan proyeksi partisi pada tabel ini kapan saja dengan menetapkan `projection.enabled` ke `false`.

1. Setelah selesai, pilih **Simpan**.

1. Di Editor Kueri Athena, uji kueri kolom yang Anda konfigurasikan untuk tabel.

   Contoh kueri berikut menggunakan`SELECT DISTINCT`untuk mengembalikan nilai-nilai unik dari`year`kolom. Basis data berisi data dari 1987 hingga 2016, tetapi `projection.year.range` properti membatasi nilai yang dikembalikan ke tahun 2010 hingga 2016.  
![\[Kueri kolom yang menggunakan proyeksi partisi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/partition-projection-5.png)
**catatan**  
Jika Anda mengatur`projection.enabled`ke`true`tetapi gagal untuk mengonfigurasi satu atau lebih partisi kolom, Anda menerima pesan kesalahan seperti berikut:  
`HIVE_METASTORE_ERROR: Table database_name.table_name is configured for partition projection, but the following partition columns are missing projection configuration: [column_name] (table database_name.table_name)`.

## Cara menentukan lokasi penyimpanan S3 kustom
<a name="partition-projection-specifying-custom-s3-storage-locations"></a>

Saat mengedit properti tabel AWS Glue, Anda juga dapat menentukan templat jalur Amazon S3 khusus untuk partisi yang diproyeksikan. Template kustom memungkinkan Athena untuk benar memetakan nilai partisi ke lokasi file Amazon S3 kustom yang tidak mengikuti`.../column=value/...`Pola. 

Menggunakan templat kustom adalah opsional. Namun, jika Anda menggunakan templat kustom, templat harus berisi placeholder untuk setiap kolom partisi. Lokasi template harus diakhiri dengan garis miring ke depan sehingga file data yang dipartisi hidup dalam “folder” per partisi.

**Untuk menentukan templat lokasi partisi kustom**

1. Mengikuti langkah-langkah untuk [mengkonfigurasi dan mengaktifkan proyeksi partisi menggunakan AWS Glue konsol](#partition-projection-setting-up-procedure), tambahkan tambahan pasangan kunci-nilai yang menentukan template kustom sebagai berikut:

   1. Untuk **Kunci**, masukkan `storage.location.template`.

   1. Untuk**Nilai**, tentukan lokasi yang mencakup placeholder untuk setiap kolom partisi. Pastikan bahwa setiap placeholder (dan jalur S3 itu sendiri) diakhiri dengan satu garis miring ke depan.

      Nilai templat contoh berikut mengasumsikan tabel dengan kolom partisi`a`,`b`, dan`c`.

      ```
      s3://amzn-s3-demo-bucket/table_root/a=${a}/${b}/some_static_subdirectory/${c}/      
      ```

      ```
      s3://amzn-s3-demo-bucket/table_root/c=${c}/${b}/some_static_subdirectory/${a}/${b}/${c}/${c}/      
      ```

      Untuk tabel yang sama, nilai templat contoh berikut tidak valid karena mengandung tidak ada tempat untuk kolom`c`.

      ```
      s3://amzn-s3-demo-bucket/table_root/a=${a}/${b}/some_static_subdirectory/         
      ```

1. Pilih **Terapkan**.

# Jenis yang didukung untuk proyeksi partisi
<a name="partition-projection-supported-types"></a>

Sebuah tabel dapat memiliki kombinasi`enum`,`integer`,`date,`atau`injected`jenis kolom partisi.

## Jenis enum
<a name="partition-projection-enum-type"></a>

Gunakan `enum` tipe untuk kolom partisi yang nilainya adalah anggota dari kumpulan yang disebutkan (misalnya, kode bandara atau). Wilayah AWS

Tentukan properti partisi dalam tabel sebagai berikut:


****  

| Nama properti | Contoh nilai | Deskripsi | 
| --- | --- | --- | 
| projection.columnName.type |  `enum`  | Wajib. Jenis proyeksi yang digunakan untuk kolomcolumnName. Nilai harusenum(case sensitive) untuk memberi sinyal penggunaan tipe enum. Memimpin dan mengikuti ruang putih diperbolehkan. | 
| projection.columnName.values |  `A,B,C,D,E,F,G,Unknown`  | Wajib. Daftar dipisahkan koma dari nilai partisi yang disebutkan untuk kolom. columnName Setiap ruang putih dianggap sebagai bagian dari nilai enum. | 

**catatan**  
Sebagai praktik terbaik kami sarankan untuk membatasi penggunaan`enum`berdasarkan proyeksi partisi untuk beberapa lusin atau kurang. Meskipun tidak ada batasan spesifik untuk `enum` proyeksi, ukuran total metadata tabel Anda tidak dapat melebihi AWS Glue batas sekitar 1 MB saat gzip dikompresi. Perhatikan bahwa batas ini dibagi di bagian kunci dari tabel Anda seperti nama kolom, lokasi, format penyimpanan, dan lain-lain. Jika Anda menemukan diri Anda menggunakan lebih dari beberapa lusin unik IDs dalam `enum` proyeksi Anda, pertimbangkan pendekatan alternatif seperti memasukkan sejumlah kecil nilai unik di bidang pengganti. Dengan melakukan trading di luar kardinalitas, Anda dapat mengontrol jumlah nilai unik di`enum`Bidang. 

## Jenis bilangan bulat
<a name="partition-projection-integer-type"></a>

Gunakan tipe integer untuk kolom partisi yang nilainya mungkin ditafsirkan sebagai bilangan bulat dalam kisaran yang ditentukan. Kolom bilangan bulat yang diproyeksikan saat ini terbatas pada kisaran Java yang ditandatangani panjang (-263ke 263-1 inklusif).


****  

| Nama properti | Contoh nilai | Deskripsi | 
| --- | --- | --- | 
| projection.columnName.type |  `integer`  | Wajib. Jenis proyeksi yang digunakan untuk kolomcolumnName. Nilai harus berupainteger(case sensitive) untuk sinyal penggunaan tipe integer. Memimpin dan mengikuti ruang putih diperbolehkan. | 
| projection.columnName.range |  `0,10` `-1,8675309` `0001,9999`  | Wajib. Daftar dipisahkan koma dua elemen yang memberikan nilai rentang minimum dan maksimum yang akan dikembalikan oleh kueri pada kolom. columnName Perhatikan bahwa nilai harus dipisahkan dengan koma, bukan tanda hubung. Nilai-nilai ini inklusif, bisa negatif, dan dapat memiliki nol terkemuka. Memimpin dan mengikuti ruang putih diperbolehkan. | 
| projection.columnName.interval |  `1` `5`  | Tidak wajib. Sebuah integer positif yang menentukan interval antara nilai-nilai partisi berturut-turut untuk kolom. columnName Contohnya,rangenilai “1,3" denganintervalNilai “1" menghasilkan nilai 1, 2, dan 3. SamarangeNilai denganintervalnilai “2" menghasilkan nilai-nilai 1 dan 3, melewatkan 2. Memimpin dan mengikuti ruang putih diperbolehkan. Default-nya adalah 1. | 
| projection.columnName.digits |  `1` `5`  | Tidak wajib. Sebuah integer positif yang menentukan jumlah digit untuk dimasukkan dalam representasi akhir nilai partisi untuk kolom. columnName Contohnya,rangenilai “1,3" yang memilikidigitsNilai “1" menghasilkan nilai 1, 2, dan 3. SamarangeNilai dengandigitsnilai “2" menghasilkan nilai-nilai 01, 02, dan 03. Memimpin dan mengikuti ruang putih diperbolehkan. Default adalah tidak ada jumlah statis digit dan tidak ada nol terkemuka. | 

## Jenis tanggal
<a name="partition-projection-date-type"></a>

Gunakan tipe tanggal untuk kolom partisi yang nilainya dapat diinterpretasikan sebagai tanggal (dengan waktu opsional) dalam rentang yang ditetapkan.

**penting**  
Kolom tanggal yang Diproyeksikan dihasilkan dalam Waktu Universal Terkoordinasi (UTC) pada waktu eksekusi kueri.


****  

| Nama properti | Contoh nilai | Deskripsi | 
| --- | --- | --- | 
| projection.columnName.type |  `date`  | Wajib. Jenis proyeksi yang digunakan untuk kolomcolumnName. Nilai harus berupadate(case insensitive) untuk memberi sinyal penggunaan tipe tanggal. Memimpin dan mengikuti ruang putih diperbolehkan. | 
| projection.columnName.range |  `201701,201812` `01-01-2010,12-31-2018` `NOW-3YEARS,NOW` `201801,NOW+1MONTH`  |  Wajib. Daftar dua elemen yang dipisahkan koma yang memberikan `range` nilai minimum dan maksimum untuk kolom. *columnName* Nilai-nilai ini inklusif dan dapat menggunakan format yang kompatibel dengan Java`java.time.*`Jenis tanggal. Kedua nilai minimum dan maksimum harus menggunakan format yang sama. Format yang ditentukan dalam`.format`properti harus format yang digunakan untuk nilai-nilai ini. Kolom ini juga dapat berisi string tanggal relatif, diformat dalam pola ekspresi reguler ini: `\s*NOW\s*(([\+\-])\s*([0-9]+)\s*(YEARS?\|MONTHS?\|WEEKS?\|DAYS?\|HOURS?\|MINUTES?\|SECONDS?)\s*)?` Ruang putih diperbolehkan, tetapi dalam literal tanggal dianggap bagian dari string tanggal sendiri.  | 
| projection.columnName.format |  `yyyyMM` `dd-MM-yyyy` `dd-MM-yyyy-HH-mm-ss`  | Wajib. String format tanggal berdasarkan format tanggal Java [DateTimeFormatter](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html). Dapat didukungJava.time.\$1Jenis. | 
| projection.columnName.interval |  `1` `5`  |  Sebuah integer positif yang menentukan interval antara nilai-nilai partisi berturut-turut untuk kolom. *columnName* Contohnya,`range`Nilai`2017-01,2018-12`dengan`interval`Nilai`1`dan sebuah`interval.unit`Nilai`MONTHS`menghasilkan nilai 2017-01, 2017-02, 2017-03, dan seterusnya. Sama`range`Nilai dengan`interval`Nilai`2`dan sebuah`interval.unit`Nilai`MONTHS`menghasilkan nilai 2017-01, 2017-03, 2017-05, dan seterusnya. Spasi di awal dan akhir kalimat tidak diperbolehkan. Saat tanggal yang diberikan berada pada presisi satu hari atau satu bulan,`interval` adalah opsional dan default untuk 1 hari atau 1 bulan, masing-masing. Sebaliknya, `interval` diperlukan.  | 
| projection.columnName.interval.unit |  `YEARS` `MONTHS` `WEEKS` `DAYS` `HOURS` `MINUTES` `SECONDS` `MILLIS`  |  Kata satuan waktu yang mewakili bentuk serial dari a [ChronoUnit](https://docs.oracle.com/javase/8/docs/api/java/time/temporal/ChronoUnit.html). Kemungkinan nilai adalah `YEARS`, `MONTHS`, `WEEKS`, `DAYS`, `HOURS`, `MINUTES`, `SECONDS`, dan `MILLIS`. Nilai-nilai ini tidak peka huruf besar. Saat tanggal yang diberikan berada pada presisi satu hari atau satu bulan,`interval.unit` adalah opsional dan default untuk 1 hari atau 1 bulan, masing-masing. Sebaliknya, `interval.unit` diperlukan.  | 

**Example — Partisi berdasarkan bulan**  
Berikut contoh tabel konfigurasi partisi data per bulan dari 2015 hingga saat ini.  

```
'projection.month.type'='date', 
'projection.month.format'='yyyy-MM', 
'projection.month.interval'='1', 
'projection.month.interval.unit'='MONTHS', 
'projection.month.range'='2015-01,NOW', 
...
```

## Jenis yang disuntikkan
<a name="partition-projection-injected-type"></a>

Gunakan jenis disuntikkan untuk partisi kolom dengan nilai-nilai yang mungkin tidak prosedural dihasilkan dalam beberapa kisaran logis tetapi yang disediakan dalam query`WHERE`klausul sebagai nilai tunggal.

Penting untuk diingat hal-hal berikut:
+ Kueri pada kolom disuntikkan gagal jika ekspresi filter tidak disediakan untuk setiap kolom disuntikkan.
+ Kueri dengan beberapa nilai untuk ekspresi filter pada kolom yang disuntikkan hanya berhasil jika nilainya terpisah.
+ Hanya kolom`string`didukung.
+ Bila Anda menggunakan `WHERE IN` klausa dengan kolom partisi yang disuntikkan, ada batas 1.000 nilai yang dapat Anda tentukan dalam `IN` daftar. Untuk menanyakan kumpulan data dengan lebih dari 1.000 partisi untuk kolom yang disuntikkan, pisahkan kueri menjadi beberapa kueri yang lebih kecil, masing-masing dengan hingga 1.000 nilai dalam `WHERE IN` klausa, lalu agregat hasilnya.


****  

| Nama properti | Nilai | Deskripsi | 
| --- | --- | --- | 
| projection.columnName.type |  `injected`  | Wajib. Jenis proyeksi yang digunakan untuk kolomcolumnName. Hanyastringdidukung. Nilai yang ditentukan harusinjected(kasus tidak sensitif). Memimpin dan mengikuti ruang putih diperbolehkan. | 

Untuk informasi selengkapnya, lihat [Kapan menggunakan jenis `injected` proyeksi](partition-projection-dynamic-id-partitioning.md#partition-projection-injection).

# Gunakan partisi ID dinamis
<a name="partition-projection-dynamic-id-partitioning"></a>

Ketika data Anda dipartisi oleh properti dengan kardinalitas tinggi atau ketika nilai tidak dapat diketahui sebelumnya, Anda dapat menggunakan jenis proyeksi. `injected` Contoh properti tersebut adalah nama pengguna, dan IDs perangkat atau produk. Bila Anda menggunakan jenis `injected` proyeksi untuk mengkonfigurasi kunci partisi, Athena menggunakan nilai-nilai dari query itu sendiri untuk menghitung set partisi yang akan dibaca.

Agar Athena dapat menjalankan kueri pada tabel yang memiliki kunci partisi yang dikonfigurasi dengan jenis `injected` proyeksi, berikut ini harus benar:
+ Kueri Anda harus menyertakan setidaknya satu nilai untuk kunci partisi.
+ Nilai harus literal atau ekspresi yang dapat dievaluasi tanpa membaca data apa pun.

Jika salah satu kriteria ini tidak terpenuhi, kueri Anda gagal dengan kesalahan berikut:

CONSTRAINT\$1VIOLATION: Untuk kolom partisi yang diproyeksikan yang disuntikkan*column\$1name*, klausa WHERE harus berisi hanya kondisi kesetaraan statis, dan setidaknya satu kondisi seperti itu harus ada.

## Kapan menggunakan jenis `injected` proyeksi
<a name="partition-projection-injection"></a>

Bayangkan Anda memiliki kumpulan data yang terdiri dari peristiwa dari perangkat IoT, yang dipartisi di perangkat '. IDs Kumpulan data ini memiliki karakteristik sebagai berikut:
+ Perangkat dihasilkan IDs secara acak.
+ Perangkat baru sering disediakan.
+ Saat ini ada ratusan ribu perangkat, dan di masa depan akan ada jutaan.

Kumpulan data ini sulit dikelola menggunakan metastores tradisional. Sulit untuk menjaga partisi tetap sinkron antara penyimpanan data dan metastore, dan partisi penyaringan bisa lambat selama perencanaan kueri. Tetapi jika Anda mengonfigurasi tabel untuk menggunakan proyeksi partisi dan menggunakan jenis `injected` proyeksi, Anda memiliki dua keuntungan: Anda tidak perlu mengelola partisi di metastore, dan kueri Anda tidak harus mencari metadata partisi.

`CREATE TABLE`Contoh berikut membuat tabel untuk set data peristiwa perangkat yang baru saja dijelaskan. Tabel menggunakan jenis proyeksi yang disuntikkan.

```
CREATE EXTERNAL TABLE device_events (
  event_time TIMESTAMP,
  data STRING,
  battery_level INT
)
PARTITIONED BY (
  device_id STRING
)
LOCATION "s3://amzn-s3-demo-bucket/prefix/"
TBLPROPERTIES (
  "projection.enabled" = "true",
  "projection.device_id.type" = "injected",
  "storage.location.template" = "s3://amzn-s3-demo-bucket/prefix/${device_id}"
)
```

Contoh kueri berikut mencari jumlah peristiwa yang diterima dari tiga perangkat tertentu selama 12 jam.

```
SELECT device_id, COUNT(*) AS events
FROM device_events
WHERE device_id IN (
  '4a770164-0392-4a41-8565-40ed8cec737e',
  'f71d12cf-f01f-4877-875d-128c23cbde17',
  '763421d8-b005-47c3-ba32-cc747ab32f9a'
)
AND event_time BETWEEN TIMESTAMP '2023-11-01 20:00' AND TIMESTAMP '2023-11-02 08:00'
GROUP BY device_id
```

Ketika Anda menjalankan query ini, Athena melihat tiga nilai untuk kunci `device_id` partisi dan menggunakannya untuk menghitung lokasi partisi. Athena menggunakan nilai `storage.location.template` properti untuk menghasilkan lokasi berikut:
+ `s3://amzn-s3-demo-bucket/prefix/4a770164-0392-4a41-8565-40ed8cec737e`
+ `s3://amzn-s3-demo-bucket/prefix/f71d12cf-f01f-4877-875d-128c23cbde17`
+ `s3://amzn-s3-demo-bucket/prefix/763421d8-b005-47c3-ba32-cc747ab32f9a`

Jika Anda meninggalkan `storage.location.template` properti dari konfigurasi proyeksi partisi, Athena menggunakan partisi gaya HIVE untuk memproyeksikan lokasi partisi berdasarkan nilai `LOCATION` dalam (misalnya,). `s3://amzn-s3-demo-bucket/prefix/device_id=4a770164-0392-4a41-8565-40ed8cec737e`

# Contoh Amazon Data Firehose
<a name="partition-projection-kinesis-firehose-example"></a>

Saat Anda menggunakan Firehose untuk mengirimkan data ke Amazon S3, konfigurasi default akan menulis objek dengan kunci yang terlihat seperti contoh berikut:

```
s3://amzn-s3-demo-bucket/prefix/yyyy/MM/dd/HH/file.extension
```

Untuk membuat tabel Athena yang menemukan partisi secara otomatis pada waktu kueri, alih-alih harus menambahkannya ke AWS Glue Data Catalog saat data baru tiba, Anda dapat menggunakan proyeksi partisi.

`CREATE TABLE`Contoh berikut menggunakan konfigurasi Firehose default.

```
CREATE EXTERNAL TABLE my_ingested_data (
 ...
)
...
PARTITIONED BY (
 datehour STRING
)
LOCATION "s3://amzn-s3-demo-bucket/prefix/"
TBLPROPERTIES (
 "projection.enabled" = "true",
 "projection.datehour.type" = "date",
 "projection.datehour.format" = "yyyy/MM/dd/HH",
 "projection.datehour.range" = "2021/01/01/00,NOW",
 "projection.datehour.interval" = "1",
 "projection.datehour.interval.unit" = "HOURS",
 "storage.location.template" = "s3://amzn-s3-demo-bucket/prefix/${datehour}/"
)
```

`TBLPROPERTIES`Klausul dalam `CREATE TABLE` pernyataan tersebut memberi tahu Athena sebagai berikut:
+ Gunakan proyeksi partisi saat menanyakan tabel
+ Kunci partisi `datehour` adalah tipe `date` (yang mencakup waktu opsional)
+ Bagaimana tanggal diformat
+ Kisaran waktu tanggal. Perhatikan bahwa nilai harus dipisahkan dengan koma, bukan tanda hubung.
+ Di mana menemukan data di Amazon S3.

Saat Anda menanyakan tabel, Athena menghitung nilai untuk `datehour` dan menggunakan templat lokasi penyimpanan untuk menghasilkan daftar lokasi partisi.

**Topics**
+ [Cara menggunakan `date` tipenya](partition-projection-kinesis-firehose-example-using-the-date-type.md)
+ [Bagaimana memilih tombol partisi](partition-projection-kinesis-firehose-example-choosing-partition-keys.md)
+ [Cara menggunakan awalan khusus dan partisi dinamis](partition-projection-kinesis-firehose-example-using-custom-prefixes-and-dynamic-partitioning.md)

# Cara menggunakan `date` tipenya
<a name="partition-projection-kinesis-firehose-example-using-the-date-type"></a>

Bila Anda menggunakan `date` tipe untuk kunci partisi yang diproyeksikan, Anda harus menentukan rentang. Karena Anda tidak memiliki data untuk tanggal sebelum aliran pengiriman Firehose dibuat, Anda dapat menggunakan tanggal pembuatan sebagai awal. Dan karena Anda tidak memiliki data untuk tanggal di masa depan, Anda dapat menggunakan token khusus `NOW` sebagai akhir.

Dalam `CREATE TABLE` contoh, tanggal mulai ditentukan sebagai 1 Januari 2021 pada tengah malam UTC.

**catatan**  
Konfigurasikan rentang yang cocok dengan data Anda sedekat mungkin sehingga Athena hanya mencari partisi yang ada.

Ketika kueri dijalankan pada tabel sampel, Athena menggunakan kondisi pada tombol `datehour` partisi dalam kombinasi dengan rentang untuk menghasilkan nilai. Pertimbangkan kueri berikut:

```
SELECT *
FROM my_ingested_data
WHERE datehour >= '2020/12/15/00'
AND datehour < '2021/02/03/15'
```

Kondisi pertama dalam `SELECT` kueri menggunakan tanggal yang sebelum dimulainya rentang tanggal yang ditentukan oleh `CREATE TABLE` pernyataan. Karena konfigurasi proyeksi partisi tidak menetapkan partisi untuk tanggal sebelum 1 Januari 2021, Athena mencari data hanya di lokasi berikut, dan mengabaikan tanggal sebelumnya dalam kueri.

```
s3://amzn-s3-demo-bucket/prefix/2021/01/01/00/
s3://amzn-s3-demo-bucket/prefix/2021/01/01/01/
s3://amzn-s3-demo-bucket/prefix/2021/01/01/02/
...
s3://amzn-s3-demo-bucket/prefix/2021/02/03/12/
s3://amzn-s3-demo-bucket/prefix/2021/02/03/13/
s3://amzn-s3-demo-bucket/prefix/2021/02/03/14/
```

Demikian pula, jika kueri berjalan pada tanggal dan waktu sebelum 3 Februari 2021 pukul 15:00, partisi terakhir akan mencerminkan tanggal dan waktu saat ini, bukan tanggal dan waktu dalam kondisi kueri.

Jika Anda ingin menanyakan data terbaru, Anda dapat memanfaatkan fakta bahwa Athena tidak menghasilkan tanggal masa depan dan hanya menentukan awal`datehour`, seperti pada contoh berikut.

```
SELECT *
FROM my_ingested_data
WHERE datehour >= '2021/11/09/00'
```

# Bagaimana memilih tombol partisi
<a name="partition-projection-kinesis-firehose-example-choosing-partition-keys"></a>

Anda dapat menentukan bagaimana proyeksi partisi memetakan lokasi partisi ke kunci partisi. Dalam `CREATE TABLE` contoh di bagian sebelumnya, tanggal dan jam digabungkan menjadi satu kunci partisi yang disebut datehour, tetapi skema lain dimungkinkan. Misalnya, Anda juga dapat mengonfigurasi tabel dengan kunci partisi terpisah untuk tahun, bulan, hari, dan jam. 

Namun, membagi tanggal menjadi tahun, bulan, dan hari berarti bahwa jenis proyeksi `date` partisi tidak dapat digunakan. Alternatifnya adalah memisahkan tanggal dari jam untuk tetap memanfaatkan jenis proyeksi `date` partisi, tetapi membuat kueri yang menentukan rentang jam lebih mudah dibaca.

Dengan mengingat hal itu, `CREATE TABLE` contoh berikut memisahkan tanggal dari jam. Karena `date` adalah kata cadangan dalam SQL, contoh menggunakan `day` sebagai nama untuk kunci partisi yang mewakili tanggal.

```
CREATE EXTERNAL TABLE my_ingested_data2 (
 ...
)
...
PARTITIONED BY (
 day STRING,
 hour INT
)
LOCATION "s3://amzn-s3-demo-bucket/prefix/"
TBLPROPERTIES (
 "projection.enabled" = "true",
 "projection.day.type" = "date",
 "projection.day.format" = "yyyy/MM/dd",
 "projection.day.range" = "2021/01/01,NOW",
 "projection.day.interval" = "1",
 "projection.day.interval.unit" = "DAYS",
 "projection.hour.type" = "integer",
 "projection.hour.range" = "0,23",
 "projection.hour.digits" = "2",
 "storage.location.template" = "s3://amzn-s3-demo-bucket/prefix/${day}/${hour}/"
)
```

Dalam `CREATE TABLE` pernyataan contoh, jam adalah kunci partisi terpisah, dikonfigurasi sebagai bilangan bulat. Konfigurasi untuk kunci partisi jam menentukan rentang 0 hingga 23, dan jam harus diformat dengan dua digit saat Athena menghasilkan lokasi partisi.

Kueri untuk `my_ingested_data2` tabel mungkin terlihat seperti ini:

```
SELECT *
FROM my_ingested_data2
WHERE day = '2021/11/09'
AND hour > 3
```

## Memahami kunci partisi dan tipe data proyeksi partisi
<a name="partition-projection-kinesis-firehose-example-partition-key-types-and-partition-projection-types"></a>

Perhatikan bahwa `datehour` kunci dalam `CREATE TABLE` contoh pertama dikonfigurasi seperti `date` pada konfigurasi proyeksi partisi, tetapi jenis kunci partisi adalah`string`. Hal yang sama `day` berlaku untuk contoh kedua. Jenis dalam konfigurasi proyeksi partisi hanya memberi tahu Athena cara memformat nilai saat menghasilkan lokasi partisi. Jenis yang Anda tentukan tidak mengubah jenis kunci partisi — dalam kueri, `datehour` dan `day` bertipe`string`.

Ketika kueri menyertakan kondisi seperti`day = '2021/11/09'`, Athena mem-parsing string di sisi kanan ekspresi menggunakan format tanggal yang ditentukan dalam konfigurasi proyeksi partisi. Setelah Athena memverifikasi bahwa tanggal berada dalam rentang yang dikonfigurasi, ia menggunakan format tanggal lagi untuk memasukkan tanggal sebagai string ke dalam template lokasi penyimpanan.

Demikian pula, untuk kondisi kueri seperti`day > '2021/11/09'`, Athena mem-parsing sisi kanan dan menghasilkan daftar semua tanggal yang cocok dalam rentang yang dikonfigurasi. Kemudian menggunakan format tanggal untuk memasukkan setiap tanggal ke dalam template lokasi penyimpanan untuk membuat daftar lokasi partisi.

Menulis kondisi yang sama dengan `day > '2021-11-09'` atau `day > DATE '2021-11-09'` tidak berfungsi. Dalam kasus pertama, format tanggal tidak cocok (perhatikan tanda hubung alih-alih garis miring ke depan), dan dalam kasus kedua, tipe data tidak cocok.

# Cara menggunakan awalan khusus dan partisi dinamis
<a name="partition-projection-kinesis-firehose-example-using-custom-prefixes-and-dynamic-partitioning"></a>

[Firehose dapat dikonfigurasi dengan [awalan khusus dan partisi dinamis.](https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html)](https://docs.aws.amazon.com/firehose/latest/dev/dynamic-partitioning.html) Dengan menggunakan fitur-fitur ini, Anda dapat mengonfigurasi kunci Amazon S3 dan menyiapkan skema partisi yang mendukung kasus penggunaan Anda dengan lebih baik. Anda juga dapat menggunakan proyeksi partisi dengan skema partisi ini dan mengkonfigurasinya sesuai dengan itu.

Misalnya, Anda dapat menggunakan fitur awalan khusus untuk mendapatkan kunci Amazon S3 yang memiliki tanggal berformat ISO, bukan skema default. `yyyy/MM/dd/HH`

Anda juga dapat menggabungkan awalan kustom dengan partisi dinamis untuk mengekstrak properti seperti dari pesan `customer_id` Firehose, seperti pada contoh berikut.

```
prefix/!{timestamp:yyyy}-!{timestamp:MM}-!{timestamp:dd}/!{partitionKeyFromQuery:customer_id}/
```

Dengan awalan Amazon S3 itu, aliran pengiriman Firehose akan menulis objek ke kunci seperti. `s3://amzn-s3-demo-bucket/prefix/2021-11-01/customer-1234/file.extension` Untuk properti seperti`customer_id`, di mana nilainya mungkin tidak diketahui sebelumnya, Anda dapat menggunakan jenis proyeksi partisi `injected` dan menggunakan `CREATE TABLE` pernyataan seperti berikut:

```
CREATE EXTERNAL TABLE my_ingested_data3 (
 ...
)
...
PARTITIONED BY (
 day STRING,
 customer_id STRING
)
LOCATION "s3://amzn-s3-demo-bucket/prefix/"
TBLPROPERTIES (
 "projection.enabled" = "true",
 "projection.day.type" = "date",
 "projection.day.format" = "yyyy-MM-dd",
 "projection.day.range" = "2021-01-01,NOW",
 "projection.day.interval" = "1",
 "projection.day.interval.unit" = "DAYS",
 "projection.customer_id.type" = "injected",
 "storage.location.template" = "s3://amzn-s3-demo-bucket/prefix/${day}/${customer_id}/"
)
```

Saat Anda menanyakan tabel yang memiliki jenis kunci partisi`injected`, kueri Anda harus menyertakan nilai untuk kunci partisi tersebut. Kueri untuk `my_ingested_data3` tabel mungkin terlihat seperti ini:

```
SELECT *
FROM my_ingested_data3
WHERE day BETWEEN '2021-11-01' AND '2021-11-30'
AND customer_id = 'customer-1234'
```

## Gunakan tipe DATE untuk kunci partisi hari
<a name="partition-projection-kinesis-firehose-example-iso-formatted-dates"></a>

Karena nilai untuk kunci `day` partisi diformat ISO, Anda juga dapat menggunakan `DATE` tipe untuk kunci partisi hari alih-alih`STRING`, seperti pada contoh berikut:

```
PARTITIONED BY (day DATE, customer_id STRING)
```

Saat Anda melakukan kueri, strategi ini memungkinkan Anda untuk menggunakan fungsi tanggal pada kunci partisi tanpa parsing atau casting, seperti pada contoh berikut:

```
SELECT *
FROM my_ingested_data3
WHERE day > CURRENT_DATE - INTERVAL '7' DAY
AND customer_id = 'customer-1234'
```

**catatan**  
Menentukan kunci partisi dari `DATE` jenis mengasumsikan bahwa Anda telah menggunakan fitur [awalan khusus](https://docs.aws.amazon.com/firehose/latest/dev/s3-prefixes.html) untuk membuat kunci Amazon S3 yang memiliki tanggal berformat ISO. Jika Anda menggunakan format Firehose default`yyyy/MM/dd/HH`, Anda harus menentukan kunci partisi sebagai tipe `string` meskipun properti tabel yang sesuai adalah tipe`date`, seperti pada contoh berikut:  

```
PARTITIONED BY ( 
  `mydate` string)
TBLPROPERTIES (
  'projection.enabled'='true', 
   ...
  'projection.mydate.type'='date',
  'storage.location.template'='s3://amzn-s3-demo-bucket/prefix/${mydate}')
```

# Cegah pelambatan Amazon S3
<a name="performance-tuning-s3-throttling"></a>

Throttling adalah proses membatasi tingkat di mana Anda menggunakan layanan, aplikasi, atau sistem. Di AWS, Anda dapat menggunakan pelambatan untuk mencegah penggunaan layanan Amazon S3 yang berlebihan dan meningkatkan ketersediaan dan daya tanggap Amazon S3 untuk semua pengguna. Namun, karena pembatasan membatasi kecepatan transfer data ke atau dari Amazon S3, penting untuk mempertimbangkan untuk mencegah interaksi Anda terhambat.

Seperti yang ditunjukkan dalam bagian [tuning kinerja, pengoptimalan](performance-tuning.md) dapat bergantung pada keputusan tingkat layanan Anda, bagaimana Anda menyusun tabel dan data, dan bagaimana Anda menulis kueri.

**Topics**
+ [Kurangi pelambatan di tingkat layanan](performance-tuning-s3-throttling-reduce-throttling-at-the-service-level.md)
+ [Optimalkan tabel Anda](performance-tuning-s3-throttling-optimizing-your-tables.md)
+ [Optimalkan kueri Anda](performance-tuning-s3-throttling-optimizing-queries.md)

# Kurangi pelambatan di tingkat layanan
<a name="performance-tuning-s3-throttling-reduce-throttling-at-the-service-level"></a>

Untuk menghindari pelambatan Amazon S3 pada tingkat layanan, Anda dapat memantau penggunaan dan menyesuaikan [kuota layanan Anda, atau Anda menggunakan teknik tertentu seperti](https://docs.aws.amazon.com/general/latest/gr/s3.html#limits_s3) partisi. Berikut ini adalah beberapa kondisi yang dapat menyebabkan throttling:
+ **Melebihi batas permintaan API akun Anda** - Amazon S3 memiliki batas permintaan API default yang didasarkan pada jenis dan penggunaan akun. Jika Anda melebihi jumlah maksimum permintaan per detik untuk satu awalan, permintaan Anda mungkin dibatasi untuk mencegah kelebihan layanan Amazon S3.
+ **Partisi data tidak memadai - Jika Anda tidak mempartisi** data dengan benar dan mentransfer sejumlah besar data, Amazon S3 dapat membatasi permintaan Anda. Untuk informasi selengkapnya tentang partisi, lihat [Gunakan partisi](performance-tuning-s3-throttling-optimizing-your-tables.md#performance-tuning-s3-throttling-use-partitioning) bagian dalam dokumen ini.
+ **Sejumlah besar benda kecil** — Jika memungkinkan, hindari memiliki sejumlah besar file kecil. Amazon S3 memiliki batas [5500 permintaan GET](https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance.html) per detik per awalan yang dipartisi, dan kueri Athena Anda memiliki batas yang sama. Jika Anda memindai jutaan objek kecil dalam satu kueri, kueri Anda kemungkinan akan dibatasi oleh Amazon S3.

Untuk menghindari pemindaian berlebih, Anda dapat menggunakan AWS Glue ETL untuk memadatkan file Anda secara berkala, atau Anda mempartisi tabel dan menambahkan filter kunci partisi. Untuk informasi selengkapnya, lihat sumber daya berikut ini.
+ [Bagaimana saya bisa mengonfigurasi pekerjaan AWS Glue ETL untuk mengeluarkan file yang lebih besar?](https://aws.amazon.com/premiumsupport/knowledge-center/glue-job-output-large-files/) (*Pusat AWS Pengetahuan*)
+ [Membaca file input dalam kelompok yang lebih besar](https://docs.aws.amazon.com/glue/latest/dg/grouping-input-files.html) (*Panduan AWS Glue Pengembang*)

# Optimalkan tabel Anda
<a name="performance-tuning-s3-throttling-optimizing-your-tables"></a>

Penataan data Anda penting jika Anda mengalami masalah pelambatan. Meskipun Amazon S3 dapat menangani data dalam jumlah besar, pembatasan terkadang terjadi karena cara data terstruktur.

Bagian berikut menawarkan beberapa saran tentang cara menyusun data Anda di Amazon S3 untuk menghindari masalah pembatasan.

## Gunakan partisi
<a name="performance-tuning-s3-throttling-use-partitioning"></a>

Anda dapat menggunakan partisi untuk mengurangi pembatasan dengan membatasi jumlah data yang harus diakses pada waktu tertentu. Dengan mempartisi data pada kolom tertentu, Anda dapat mendistribusikan permintaan secara merata di beberapa objek dan mengurangi jumlah permintaan untuk satu objek. Mengurangi jumlah data yang harus dipindai meningkatkan kinerja kueri dan menurunkan biaya.

Anda dapat menentukan partisi, yang bertindak sebagai kolom virtual, saat Anda membuat tabel. Untuk membuat tabel dengan partisi dalam `CREATE TABLE` pernyataan, Anda menggunakan `PARTITIONED BY (column_name data_type)` klausa untuk menentukan kunci untuk mempartisi data Anda.

Untuk membatasi partisi yang dipindai oleh kueri, Anda dapat menentukannya sebagai predikat dalam `WHERE` klausa kueri. Dengan demikian, kolom yang sering digunakan sebagai filter adalah kandidat yang baik untuk partisi. Praktik umum adalah mempartisi data berdasarkan interval waktu, yang dapat menyebabkan skema partisi multi-level.

Perhatikan bahwa partisi juga memiliki biaya. Ketika Anda meningkatkan jumlah partisi dalam tabel Anda, waktu yang diperlukan untuk mengambil dan memproses metadata partisi juga meningkat. Dengan demikian, partisi berlebihan dapat menghilangkan manfaat yang Anda peroleh dengan mempartisi dengan lebih bijaksana. Jika data Anda sangat miring ke satu nilai partisi, dan sebagian besar kueri menggunakan nilai itu, maka Anda mungkin dikenakan biaya tambahan.

Untuk informasi lebih lanjut tentang partisi di Athena, lihat [Apa itu partisi?](ctas-partitioning-and-bucketing-what-is-partitioning.md)

## Bucket data Anda
<a name="performance-tuning-s3-throttling-bucket-your-data"></a>

Cara lain untuk mempartisi data Anda adalah dengan memasukkan data dalam satu partisi. Dengan bucketing, Anda menentukan satu atau beberapa kolom yang berisi baris yang ingin Anda kelompokkan bersama. Kemudian, Anda menempatkan baris itu ke dalam beberapa ember. Dengan cara ini, Anda hanya menanyakan bucket yang harus dibaca, yang mengurangi jumlah baris data yang harus dipindai.

Saat Anda memilih kolom yang akan digunakan untuk bucketing, pilih kolom yang memiliki kardinalitas tinggi (yaitu, yang memiliki banyak nilai berbeda), didistribusikan secara seragam, dan sering digunakan untuk memfilter data. Contoh kolom yang baik untuk digunakan untuk bucketing adalah kunci utama, seperti kolom ID.

Untuk informasi lebih lanjut tentang bucketing di Athena, lihat [Apa itu bucketing?](ctas-partitioning-and-bucketing-what-is-bucketing.md)

## Gunakan indeks AWS Glue partisi
<a name="performance-tuning-s3-throttling-use-aws-glue-partition-indexes"></a>

Anda dapat menggunakan indeks AWS Glue partisi untuk mengatur data dalam tabel berdasarkan nilai satu atau lebih partisi. AWS Glue Indeks partisi dapat mengurangi jumlah transfer data, jumlah pemrosesan data, dan waktu untuk query untuk memproses.

Indeks AWS Glue partisi adalah file metadata yang berisi informasi tentang partisi dalam tabel, termasuk kunci partisi dan nilainya. Indeks partisi disimpan dalam bucket Amazon S3 dan diperbarui secara otomatis oleh AWS Glue saat partisi baru ditambahkan ke tabel.

Ketika indeks AWS Glue partisi hadir, query mencoba untuk mengambil subset dari partisi alih-alih memuat semua partisi dalam tabel. Query hanya berjalan pada subset data yang relevan dengan query.

Saat Anda membuat tabel di AWS Glue, Anda dapat membuat indeks partisi pada kombinasi tombol partisi yang ditentukan di atas tabel. Setelah Anda membuat satu atau lebih indeks partisi di atas meja, Anda harus menambahkan properti ke tabel yang memungkinkan pemfilteran partisi. Kemudian, Anda dapat menanyakan tabel dari Athena.

Untuk informasi tentang membuat indeks partisi AWS Glue, lihat [Bekerja dengan indeks partisi AWS Glue di Panduan AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/partition-indexes.html) *Pengembang*. Untuk informasi tentang menambahkan properti tabel untuk mengaktifkan pemfilteran partisi, lihat[Optimalkan kueri dengan pengindeksan dan AWS Glue pemfilteran partisi](glue-best-practices-partition-index.md).

## Gunakan kompresi data dan pemisahan file
<a name="performance-tuning-s3-throttling-use-data-compression-and-file-splitting"></a>

Kompresi data dapat mempercepat kueri secara signifikan jika file berada pada ukuran optimal atau jika mereka dapat dibagi menjadi kelompok-kelompok logis. Umumnya, rasio kompresi yang lebih tinggi membutuhkan lebih banyak siklus CPU untuk mengompres dan mendekompresi data. Untuk Athena, kami menyarankan Anda menggunakan Apache Parquet atau Apache ORC, yang mengompres data secara default. Untuk informasi tentang kompresi data di Athena, lihat. [Gunakan kompresi di Athena](compression-formats.md)

Memisahkan file meningkatkan paralelisme dengan memungkinkan Athena untuk mendistribusikan tugas membaca satu file di antara banyak pembaca. Jika satu file tidak dapat dibagi, hanya satu pembaca yang dapat membaca file sementara pembaca lain menganggur. Apache Parquet dan Apache ORC juga mendukung file splittable.

## Gunakan penyimpanan data kolumnar yang dioptimalkan
<a name="performance-tuning-s3-throttling-use-optimized-columnar-data-stores"></a>

Kinerja kueri Athena meningkat secara signifikan jika Anda mengonversi data Anda menjadi format kolumnar. Saat Anda menghasilkan file kolumnar, salah satu teknik pengoptimalan yang perlu dipertimbangkan adalah memesan data berdasarkan kunci partisi.

Apache Parquet dan Apache ORC biasanya digunakan penyimpanan data kolumnar open source. Untuk informasi tentang mengonversi sumber data Amazon S3 yang ada ke salah satu format ini, lihat. [Konversi ke format kolumnar](columnar-storage.md#convert-to-columnar)

### Gunakan ukuran blok Parket yang lebih besar atau ukuran garis ORC
<a name="performance-tuning-s3-throttling-use-a-larger-parquet-block-size-or-orc-stripe-size"></a>

Parket dan ORC memiliki parameter penyimpanan data yang dapat Anda atur untuk pengoptimalan. Di Parket, Anda dapat mengoptimalkan ukuran blok. Di ORC, Anda dapat mengoptimalkan ukuran garis. Semakin besar blok atau garis, semakin banyak baris yang dapat Anda simpan di masing-masing. Secara default, ukuran blok Parket adalah 128 MB, dan ukuran garis ORC adalah 64 MB.

Jika garis ORC kurang dari 8 MB (nilai default`hive.orc.max_buffer_size`), Athena membaca seluruh garis ORC. Ini adalah tradeoff yang dilakukan Athena antara selektivitas kolom dan operasi input/output per detik untuk garis-garis yang lebih kecil.

Jika Anda memiliki tabel dengan jumlah kolom yang sangat besar, ukuran blok atau garis kecil dapat menyebabkan lebih banyak data dipindai daripada yang diperlukan. Dalam kasus ini, ukuran blok yang lebih besar bisa lebih efisien.

### Gunakan ORC untuk tipe kompleks
<a name="performance-tuning-s3-throttling-use-orc-for-complex-types"></a>

Saat ini, ketika Anda menanyakan kolom yang disimpan di Parket yang memiliki tipe data kompleks (misalnya,`array`,`map`, atau`struct`), Athena membaca seluruh baris data alih-alih membaca secara selektif hanya kolom yang ditentukan. Ini adalah masalah yang diketahui di Athena. Sebagai solusinya, pertimbangkan untuk menggunakan ORC.

### Pilih algoritma kompresi
<a name="performance-tuning-s3-throttling-choose-a-compression-algorithm"></a>

Parameter lain yang dapat Anda konfigurasikan adalah algoritma kompresi pada blok data. [Untuk informasi tentang algoritma kompresi yang didukung untuk Parket dan ORC di Athena, lihat Dukungan kompresi Athena.](https://docs.aws.amazon.com/athena/latest/ug/compression-formats.html)

Untuk informasi lebih lanjut tentang optimalisasi format penyimpanan kolumnar di Athena, lihat bagian “Optimalkan pembuatan penyimpanan data kolumnar” di posting Blog AWS Big Data [10 Tips Penyetelan Kinerja Teratas](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) untuk Amazon Athena.

## Gunakan tabel Iceberg
<a name="performance-tuning-s3-throttling-use-iceberg-tables"></a>

Apache Iceberg adalah format tabel terbuka untuk kumpulan data analitik yang sangat besar yang dirancang untuk penggunaan yang dioptimalkan di Amazon S3. Anda dapat menggunakan tabel Iceberg untuk membantu mengurangi pelambatan di Amazon S3.

Tabel gunung es menawarkan keuntungan berikut:
+ Anda dapat mempartisi tabel Iceberg pada satu atau lebih kolom. Ini mengoptimalkan akses data dan mengurangi jumlah data yang harus dipindai oleh kueri.
+ Karena mode penyimpanan objek Iceberg mengoptimalkan tabel Iceberg agar berfungsi dengan Amazon S3, mode ini dapat memproses volume data yang besar dan beban kerja kueri yang berat.
+ Tabel gunung es dalam mode penyimpanan objek dapat diskalakan, toleran terhadap kesalahan, dan tahan lama, yang dapat membantu mengurangi pelambatan.
+ Dukungan transaksi ACID berarti bahwa beberapa pengguna dapat menambahkan dan menghapus objek Amazon S3 secara atom.

[Untuk informasi lebih lanjut tentang Apache Iceberg, lihat Apache Iceberg.](https://iceberg.apache.org/) [Untuk informasi selengkapnya tentang menggunakan tabel Apache Iceberg di Athena, lihat Menggunakan tabel Gunung Es.](https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg.html)

# Optimalkan kueri Anda
<a name="performance-tuning-s3-throttling-optimizing-queries"></a>

Gunakan saran di bagian ini untuk mengoptimalkan kueri SQL Anda di Athena.

## Gunakan LIMIT dengan klausa ORDER BY
<a name="performance-tuning-s3-throttling-use-limit-with-the-order-by-clause"></a>

`ORDER BY`Klausa mengembalikan data dalam urutan yang diurutkan. Ini membutuhkan Athena untuk mengirim semua baris data ke node pekerja tunggal dan kemudian mengurutkan baris. Jenis kueri ini dapat berjalan untuk waktu yang lama atau bahkan gagal.

Untuk efisiensi yang lebih besar dalam kueri Anda, lihat *N* nilai atas atau bawah, lalu gunakan juga `LIMIT` klausa. Ini secara signifikan mengurangi biaya pengurutan dengan mendorong penyortiran dan pembatasan ke node pekerja individu daripada ke satu pekerja.

## Optimalkan klausa JOIN
<a name="performance-tuning-s3-throttling-optimize-join-clauses"></a>

Ketika Anda menggabungkan dua tabel, Athena mendistribusikan tabel di sebelah kanan ke node pekerja, dan kemudian mengalirkan tabel di sebelah kiri untuk melakukan gabungan.

Untuk alasan ini, tentukan tabel yang lebih besar di sisi kiri gabungan dan tabel yang lebih kecil di sisi kanan gabungan. Dengan cara ini, Athena menggunakan lebih sedikit memori dan menjalankan kueri dengan latensi yang lebih rendah.

Perhatikan juga poin-poin berikut:
+ Saat Anda menggunakan beberapa `JOIN` perintah, tentukan tabel dari yang terbesar hingga terkecil.
+ Hindari gabungan silang kecuali jika diperlukan oleh kueri.

## Optimalkan klausa GROUP BY
<a name="performance-tuning-s3-throttling-optimize-group-by-clauses"></a>

`GROUP BY`Operator mendistribusikan baris berdasarkan `GROUP BY` kolom ke node pekerja. Kolom ini direferensikan dalam memori dan nilainya dibandingkan saat baris dicerna. Nilai-nilai dikumpulkan bersama ketika `GROUP BY` kolom cocok. Dengan mempertimbangkan cara kerja proses ini, disarankan untuk memesan kolom dari kardinalitas tertinggi ke yang terendah.

## Gunakan angka, bukan string
<a name="performance-tuning-s3-throttling-use-numbers-instead-of-strings"></a>

Karena angka membutuhkan lebih sedikit memori dan lebih cepat diproses dibandingkan dengan string, gunakan angka alih-alih string jika memungkinkan.

## Batasi jumlah kolom
<a name="performance-tuning-s3-throttling-limit-the-number-of-columns"></a>

Untuk mengurangi jumlah total memori yang diperlukan untuk menyimpan data Anda, batasi jumlah kolom yang ditentukan dalam `SELECT` pernyataan Anda.

## Gunakan ekspresi reguler alih-alih LIKE
<a name="performance-tuning-s3-throttling-use-regular-expressions-instead-of-like"></a>

Kueri yang menyertakan klausa seperti `LIKE '%string%'` pada string besar bisa sangat intensif secara komputasi. Saat Anda memfilter beberapa nilai pada kolom string, gunakan fungsi [regexp\$1like ()](https://trino.io/docs/current/functions/regexp.html#regexp_like) dan ekspresi reguler sebagai gantinya. Ini sangat berguna ketika Anda membandingkan daftar panjang nilai.

## Gunakan klausa LIMIT
<a name="performance-tuning-s3-throttling-use-the-limit-clause"></a>

Alih-alih memilih semua kolom saat Anda menjalankan kueri, gunakan `LIMIT` klausa untuk mengembalikan hanya kolom yang Anda butuhkan. Ini mengurangi ukuran kumpulan data yang diproses melalui pipeline eksekusi kueri. `LIMIT`klausa lebih membantu ketika Anda menanyakan tabel yang memiliki sejumlah besar kolom yang berbasis string. `LIMIT`klausa juga membantu ketika Anda melakukan beberapa gabungan atau agregasi pada kueri apa pun.

# Sumber daya tambahan
<a name="performance-tuning-additional-resources"></a>

Untuk informasi tambahan tentang penyetelan kinerja di Athena, pertimbangkan sumber daya berikut:
+ AWS Posting blog Big Data: [10 kiat penyetelan kinerja teratas untuk Amazon Athena](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/).
+ AWS *Posting blog Big Data: [Jalankan kueri 3x lebih cepat dengan penghematan biaya hingga 70% pada mesin Amazon Athena terbaru](https://aws.amazon.com/blogs/big-data/run-queries-3x-faster-with-up-to-70-cost-savings-on-the-latest-amazon-athena-engine/) di AWS Blog Big Data.*
+ AWS Posting blog Big Data: [Tingkatkan kueri federasi dengan pushdown predikat di](https://aws.amazon.com/blogs/big-data/improve-federated-queries-with-predicate-pushdown-in-amazon-athena/) Amazon Athena.
+ Panduan Pengguna Layanan Penyimpanan Sederhana Amazon: [Pola desain praktik terbaik: mengoptimalkan kinerja Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance.html).
+ Posting [Athena lainnya di blog data AWS besar](https://aws.amazon.com/blogs/big-data/tag/amazon-athena/). 
+ Ajukan pertanyaan di [AWS re:Post](https://repost.aws/tags/TA78iVOM7gR62_QqDe2-CmiA/amazon-athena) menggunakan tag **Amazon Athena**.
+ Konsultasikan [topik Athena di pusat AWS pengetahuan](https://aws.amazon.com/premiumsupport/knowledge-center/#Amazon_Athena).
+ Kontak AWS Dukungan (di Konsol Manajemen AWS, klik **Support**, **Support Center**)

# Gunakan kompresi di Athena
<a name="compression-formats"></a>

Athena mendukung berbagai format kompresi untuk membaca dan menulis data, termasuk membaca dari tabel yang menggunakan berbagai format kompresi. Misalnya, Athena dapat berhasil membaca data dalam tabel yang menggunakan format file Parquet ketika beberapa file Parquet dikompresi dengan Snappy dan file Parquet lainnya dikompresi dengan GZIP. Prinsip yang sama berlaku untuk format penyimpanan ORC, file teks, dan JSON.

## Format kompresi yang didukung
<a name="compression-support-formats"></a>

Athena mendukung format kompresi berikut:
+ **BZIP2**— Format yang menggunakan algoritma Burrows-Wheeler.
+ **DEFLATE** [— Algoritma kompresi berdasarkan pengkodean [LZSS](https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Storer%E2%80%93Szymanski) dan Huffman.](https://en.wikipedia.org/wiki/Huffman_coding) [Deflate](https://en.wikipedia.org/wiki/Deflate) hanya relevan untuk format file Avro.
+ **GZIP** — Algoritma kompresi berdasarkan Deflate. Untuk tabel Hive di mesin Athena versi 2 dan 3, dan tabel Iceberg di mesin Athena versi 2, GZIP adalah format kompresi tulis default untuk file dalam format penyimpanan file Parket dan teks. File dalam `tar.gz` format tidak didukung.
+ **LZ4**— Anggota keluarga Lempel-Ziv 77 (LZ7) ini juga berfokus pada kecepatan kompresi dan dekompresi daripada kompresi data maksimum. LZ4 memiliki format pembingkaian berikut:
  + **LZ4 Raw/Unframed** — Implementasi standar format kompresi blok yang tidak dibingkai. LZ4 Untuk informasi selengkapnya, lihat [deskripsi format LZ4 blok](https://github.com/lz4/lz4/blob/dev/doc/lz4_Block_format.md) pada GitHub.
  + **LZ4 framed** — Implementasi pembingkaian yang biasa dari. LZ4 Untuk informasi selengkapnya, lihat [deskripsi format LZ4 bingkai](https://github.com/lz4/lz4/blob/dev/doc/lz4_Frame_format.md) di GitHub.
  + **LZ4 Hadoop-compatible** — Implementasi Apache Hadoop dari. LZ4 Implementasi ini membungkus LZ4 kompresi dengan [BlockCompressorStreamkelas.java.](https://github.com/apache/hadoop/blob/f67237cbe7bc48a1b9088e990800b37529f1db2a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockCompressorStream.java)
+ **LZO** — Format yang menggunakan algoritma Lempel—Ziv-Oberhumer, yang berfokus pada kompresi tinggi dan kecepatan dekompresi daripada kompresi maksimum data. LZO memiliki dua implementasi:
  + **LZO Standar** — Untuk informasi lebih lanjut, lihat [abstrak](http://www.oberhumer.com/opensource/lzo/#abstract) LZO di situs web Oberhumer.
  + **LZO hadoop-compatible** [— Implementasi ini membungkus algoritma LZO dengan kelas.java. BlockCompressorStream](https://github.com/apache/hadoop/blob/f67237cbe7bc48a1b9088e990800b37529f1db2a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/BlockCompressorStream.java)
+ **SNAPPY** — Algoritma kompresi yang merupakan bagian dari keluarga Lempel-Ziv 77 (). LZ7 Snappy berfokus pada kecepatan kompresi dan dekompresi yang tinggi daripada kompresi maksimum data.
+ **ZLIB** — Berdasarkan Defrate, ZLIB adalah format kompresi tulis default untuk file dalam format penyimpanan data ORC. Untuk informasi lebih lanjut, lihat halaman [zlib](https://github.com/madler/zlib) di. GitHub
+  **ZSTD** — [Algoritma kompresi data real-time Zstandard adalah algoritma kompresi](http://facebook.github.io/zstd/) cepat yang memberikan rasio kompresi tinggi. Pustaka Zstandard (ZSTD) disediakan sebagai perangkat lunak sumber terbuka menggunakan lisensi BSD. ZSTD adalah kompresi default untuk tabel Iceberg. Saat menulis data terkompresi ZSTD, Athena menggunakan kompresi ZSTD level 3 secara default. Untuk informasi lebih lanjut tentang menggunakan tingkat kompresi ZSTD di Athena, lihat. [Gunakan tingkat kompresi ZSTD](compression-support-zstd-levels.md)

**catatan**  
Athena tidak mendukung penulisan file Parket yang dikompresi dengan LZ4 atau format LZO. Bacaan untuk format kompresi ini didukung.

## Tentukan format kompresi
<a name="compression-support-specifying-compression-formats"></a>

Saat Anda menulis pernyataan CREATE TABLE atau CTAS, Anda dapat menentukan properti kompresi yang menentukan jenis kompresi yang akan digunakan saat Athena menulis ke tabel tersebut.
+ Untuk CTAS, lihat[Properti tabel CTAS](create-table-as.md#ctas-table-properties). Sebagai contoh, lihat [Contoh kueri CTAS](ctas-examples.md).
+ Untuk CREATE TABLE, lihat [ALTER TABLE SET TBLPROPERTIES](alter-table-set-tblproperties.md) daftar properti tabel kompresi.

## Tentukan tidak ada kompresi
<a name="compression-support-specifying-no-compression"></a>

Pernyataan CREATE TABLE mendukung penulisan file yang tidak terkompresi. Untuk menulis file yang tidak terkompresi, gunakan sintaks berikut: 
+ BUAT TABEL (file teks atau JSON) - Dalam`TBLPROPERTIES`, tentukan`write.compression = NONE`.
+ BUAT TABEL (Parket) — Dalam`TBLPROPERTIES`, tentukan`parquet.compression = UNCOMPRESSED`.
+ BUAT TABEL (ORC) - Dalam`TBLPROPERTIES`, tentukan`orc.compress = NONE`.

## Catatan dan sumber daya
<a name="compression-support-notes-and-resources"></a>
+ Saat ini, ekstensi file huruf besar seperti `.GZ` atau tidak dikenali `.BZIP2` oleh Athena. Hindari menggunakan kumpulan data dengan ekstensi file huruf besar, atau ganti nama ekstensi file data menjadi huruf kecil.
+ Untuk data dalam CSV, TSV, dan JSON, Athena menentukan jenis kompresi dari ekstensi file. Jika tidak ada ekstensi file, Athena memperlakukan data sebagai teks biasa yang tidak terkompresi. Jika data Anda dikompresi, pastikan nama file menyertakan ekstensi kompresi, seperti`gz`.
+ Format file ZIP tidak didukung.
+ Untuk menanyakan log Amazon Data Firehose dari Athena, format yang didukung mencakup kompresi GZIP atau file ORC dengan kompresi SNAPPY.
+ Untuk informasi selengkapnya tentang penggunaan kompresi, lihat bagian 3 (“Kompres dan pisahkan file”) dari posting Blog AWS Big Data [10 kiat penyetelan kinerja teratas untuk Amazon Athena](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/).

**Topics**
+ [Tentukan format kompresi](#compression-support-specifying-compression-formats)
+ [Tentukan tidak ada kompresi](#compression-support-specifying-no-compression)
+ [Catatan dan sumber daya](#compression-support-notes-and-resources)
+ [Kompresi meja sarang](compression-support-hive.md)
+ [Kompresi tabel gunung es](compression-support-iceberg.md)
+ [Tingkat kompresi ZSTD](compression-support-zstd-levels.md)

# Gunakan kompresi tabel Hive
<a name="compression-support-hive"></a>

Opsi kompresi untuk tabel Hive di Athena bervariasi menurut versi mesin dan format file.

## Dukungan kompresi sarang di mesin Athena versi 3
<a name="compression-support-hive-v3"></a>

Tabel berikut merangkum dukungan format kompresi di mesin Athena versi 3 untuk format file penyimpanan di Apache Hive. Format file teks termasuk TSV, CSV, JSON, dan kustom SerDes untuk teks. “Ya” atau “Tidak” dalam sel berlaku sama untuk membaca dan menulis operasi kecuali jika dicatat. Untuk keperluan tabel ini, CREATE TABLE, CTAS, dan INSERT INTO dianggap sebagai operasi tulis. Untuk informasi lebih lanjut tentang menggunakan tingkat kompresi ZSTD di Athena, lihat. [Gunakan tingkat kompresi ZSTD](compression-support-zstd-levels.md)


****  

|  | Avro | Ion | ORC | Parquet | File teks | 
| --- | --- | --- | --- | --- | --- | 
| BZIP2 | Ya | Ya | Tidak | Tidak | Ya | 
| DEFLATE | Ya | Tidak | Tidak | Tidak | Tidak | 
| GZIP | Tidak | Ya | Tidak | Ya | Ya | 
| LZ4 | Tidak | Ya | Ya |  Tulis - Tidak Baca - Ya  | Ya | 
| LZO | Tidak |  Tulis - Tidak Baca - Ya  | Tidak |  Tulis - Tidak Baca - Ya  |  Tulis - Tidak Baca - Ya  | 
| SNAPPY | Ya | Ya | Ya | Ya | Ya | 
| ZLIB | Tidak | Tidak | Ya | Tidak | Tidak | 
| ZSTD | Ya | Ya | Ya | Ya | Ya | 
| NONE | Ya | Ya | Ya | Ya | Ya | 

# Gunakan kompresi tabel Iceberg
<a name="compression-support-iceberg"></a>

Opsi kompresi untuk tabel Iceberg di Athena bervariasi menurut versi mesin dan format file.

## Dukungan kompresi gunung es di mesin Athena versi 3
<a name="compression-support-iceberg-v3"></a>

Tabel berikut merangkum dukungan format kompresi di mesin Athena versi 3 untuk format file penyimpanan di Apache Iceberg. “Ya” atau “Tidak” dalam sel berlaku sama untuk membaca dan menulis operasi kecuali jika dicatat. Untuk keperluan tabel ini, CREATE TABLE, CTAS, dan INSERT INTO dianggap sebagai operasi tulis. Format penyimpanan default untuk Iceberg di mesin Athena versi 3 adalah Parket. Format kompresi default untuk Iceberg di mesin Athena versi 3 adalah ZSTD. Untuk informasi lebih lanjut tentang menggunakan tingkat kompresi ZSTD di Athena, lihat. [Gunakan tingkat kompresi ZSTD](compression-support-zstd-levels.md)


****  

|  | Avro | ORC | Parket (default) | 
| --- | --- | --- | --- | 
| BZIP2 | Tidak | Tidak | Tidak | 
| GZIP | Ya | Tidak | Ya | 
| LZ4 | Tidak | Ya | Tidak | 
| SNAPPY | Ya | Ya | Ya | 
| ZLIB | Tidak | Ya | Tidak | 
| ZSTD | Ya | Ya | Ya (default) | 
| NONE | Ya (tentukan None atauDeflate) | Ya | Ya (tentukan None atauUncompressed) | 

# Gunakan tingkat kompresi ZSTD
<a name="compression-support-zstd-levels"></a>

[Algoritma kompresi data real-time Zstandard adalah algoritma](http://facebook.github.io/zstd/) kompresi cepat yang memberikan rasio kompresi tinggi. Perpustakaan Zstandard (ZSTD) adalah perangkat lunak open source dan menggunakan lisensi BSD. Athena mendukung membaca dan menulis data file ORC, Parket, dan teks terkompresi ZSTD.

Anda dapat menggunakan tingkat kompresi ZSTD untuk menyesuaikan rasio kompresi dan kecepatan sesuai dengan kebutuhan Anda. Pustaka ZSTD mendukung tingkat kompresi dari 1 hingga 22. Athena menggunakan kompresi ZSTD level 3 secara default.

Tingkat kompresi memberikan trade-off granular antara kecepatan kompresi dan jumlah kompresi yang dicapai. Tingkat kompresi yang lebih rendah memberikan kecepatan yang lebih cepat tetapi ukuran file yang lebih besar. Misalnya, Anda dapat menggunakan level 1 jika kecepatan paling penting dan level 22 jika ukuran paling penting. Level 3 cocok untuk banyak kasus penggunaan dan merupakan default. Gunakan level yang lebih besar dari 19 dengan hati-hati karena membutuhkan lebih banyak memori. Pustaka ZSTD juga menawarkan tingkat kompresi negatif yang memperluas jangkauan kecepatan dan rasio kompresi. Untuk informasi lebih lanjut, lihat [Zstandard Compression RFC](https://datatracker.ietf.org/doc/html/rfc8478).

Kelimpahan tingkat kompresi menawarkan peluang besar untuk fine tuning. Namun, pastikan Anda mengukur data Anda dan mempertimbangkan pengorbanan saat memutuskan tingkat kompresi. Sebaiknya gunakan level default 3 atau level dalam kisaran 6 hingga 9 untuk pertukaran yang wajar antara kecepatan kompresi dan ukuran data terkompresi. Tingkat cadangan 20 dan lebih besar untuk kasus di mana ukuran paling penting dan kecepatan kompresi tidak menjadi perhatian.

## Pertimbangan dan batasan
<a name="compression-support-zstd-levels-considerations-and-limitations"></a>

Saat menggunakan tingkat kompresi ZSTD di Athena, pertimbangkan hal-hal berikut.
+ `compression_level`Properti ZSTD hanya didukung di mesin Athena versi 3.
+ `compression_level`Properti ZSTD didukung untuk`ALTER TABLE`,, `CREATE TABLE AS` (CTAS)`CREATE TABLE`, dan pernyataan. `UNLOAD`
+ `compression_level`Properti ini opsional.
+ `compression_level`Properti ini didukung hanya untuk kompresi ZSTD.
+ Tingkat kompresi yang mungkin adalah 1 hingga 22.
+ Tingkat kompresi default adalah 3.

Untuk informasi tentang dukungan kompresi Apache Hive ZSTD di Athena, lihat. [Gunakan kompresi tabel Hive](compression-support-hive.md) Untuk informasi tentang dukungan kompresi Apache Iceberg ZSTD di Athena, lihat. [Gunakan kompresi tabel Iceberg](compression-support-iceberg.md)

## Tentukan tingkat kompresi ZSTD
<a name="compression-support-zstd-levels-specifying"></a>

Untuk menentukan tingkat kompresi ZSTD untuk`ALTER TABLE`,, `CREATE TABLE``CREATE TABLE AS`, dan `UNLOAD` pernyataan, gunakan properti. `compression_level` Untuk menentukan kompresi ZSTD itu sendiri, Anda harus menggunakan properti kompresi individual yang digunakan sintaks untuk pernyataan tersebut.

### MENGUBAH TABEL SET TBLPROPERTIES
<a name="compression-support-zstd-levels-alter-table"></a>

Dalam `SET TBLPROPERTIES` klausa [ALTER TABLE SET TBLPROPERTIES](alter-table-set-tblproperties.md) pernyataan, tentukan kompresi ZSTD menggunakan atau. `'write.compression' = ' ZSTD'` `'parquet.compression' = 'ZSTD'` Kemudian gunakan `compression_level` properti untuk menentukan nilai dari 1 hingga 22 (misalnya, '`compression_level' = '5'`). Jika Anda tidak menentukan properti tingkat kompresi, tingkat kompresi default ke 3.

#### Contoh
<a name="compression-support-zstd-levels-alter-table-example"></a>

Contoh berikut memodifikasi tabel `existing_table` untuk menggunakan format file Parket dengan kompresi ZSTD dan tingkat kompresi ZSTD 4. Perhatikan bahwa dalam `TBLPROPERTIES` klausa nilai tingkat kompresi harus dimasukkan sebagai string bukan bilangan bulat dan oleh karena itu harus diapit dalam tanda kutip tunggal atau ganda.

```
ALTER TABLE existing_table 
SET TBLPROPERTIES ('parquet.compression' = 'ZSTD', 'compression_level' = '4')
```

### CREATE TABLE
<a name="compression-support-zstd-levels-create-table"></a>

Dalam `TBLPROPERTIES` klausa [CREATE TABLE](create-table.md) pernyataan, tentukan '`write.compression' = 'ZSTD'`atau`'parquet.compression' = 'ZSTD'`, lalu gunakan `compression_level = compression_level` dan tentukan nilai dari 1 hingga 22 sebagai string. Jika `compression_level` properti tidak ditentukan, tingkat kompresi default adalah 3.

#### Contoh
<a name="compression-support-zstd-levels-create-table-example"></a>

Contoh berikut membuat tabel dalam format file Parket menggunakan kompresi ZSTD dan tingkat kompresi ZSTD 4. 

```
CREATE EXTERNAL TABLE new_table ( 
  `col0` string COMMENT '', 
  `col1` string COMMENT '' 
) 
STORED AS PARQUET 
LOCATION 's3://amzn-s3-demo-bucket/' 
TBLPROPERTIES ('write.compression' = 'ZSTD', 'compression_level' = '4')
```

### BUAT TABEL SEBAGAI (CTAS)
<a name="compression-support-zstd-levels-ctas"></a>

Dalam `WITH` klausa [CREATE TABLE AS](create-table-as.md) pernyataan, tentukan`write_compression = 'ZSTD'`, atau`parquet_compression = 'ZSTD'`, lalu gunakan `compression_level = compression_level` dan tentukan nilai dari 1 hingga 22 sebagai bilangan bulat. Jika `compression_level` properti tidak ditentukan, tingkat kompresi default adalah 3.

#### Contoh
<a name="compression-support-zstd-levels-ctas-example"></a>

Contoh CTAS berikut menentukan Parket sebagai format file menggunakan kompresi ZSTD dengan tingkat kompresi 4. Perhatikan bahwa, dalam `WITH` klausa, nilai untuk tingkat kompresi harus ditentukan sebagai bilangan bulat, bukan sebagai string.

```
CREATE TABLE new_table  
WITH ( format = 'PARQUET', write_compression = 'ZSTD', compression_level = 4)  
AS SELECT * FROM old_table
```

### MEMBONGKAR
<a name="compression-support-zstd-levels-unload"></a>

Dalam `WITH` klausa [MEMBONGKAR](unload.md) pernyataan, tentukan`compression = 'ZSTD'`, lalu gunakan `compression_level = compression_level` dan tentukan nilai dari 1 hingga 22 sebagai bilangan bulat. Jika `compression_level` properti tidak ditentukan, tingkat kompresi default adalah 3.

#### Contoh
<a name="compression-support-zstd-levels-unload-example"></a>

Contoh berikut membongkar hasil query ke lokasi yang ditentukan menggunakan format file Parquet, kompresi ZSTD, dan tingkat kompresi ZSTD 4.

```
UNLOAD (SELECT * FROM old_table) 
TO 's3://amzn-s3-demo-bucket/' 
WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)
```

# Tag sumber daya Athena
<a name="tags"></a>

Setiap tag terdiri atas sebuah kunci dan sebuah nilai, yang keduanya Anda tentukan. Saat menandai sumber daya Athena, Anda menetapkan metadata kustom padanya. Anda dapat menggunakan tag untuk mengkategorikan AWS sumber daya Anda dengan cara yang berbeda; misalnya, berdasarkan tujuan, pemilik, atau lingkungan. Di Athena, sumber daya seperti kelompok kerja, katalog data, dan reservasi kapasitas adalah sumber daya yang dapat diberi tag. Misalnya, Anda dapat membuat kumpulan tag untuk grup kerja di akun Anda yang membantu Anda melacak pemilik grup kerja, atau mengidentifikasi grup kerja berdasarkan tujuannya. Jika Anda juga mengaktifkan tag sebagai tag alokasi biaya di konsol Billing and Cost Management, biaya yang terkait dengan kueri yang sedang berjalan akan muncul di Laporan Biaya dan Penggunaan dengan tag alokasi biaya tersebut. Kami menyarankan agar Anda menggunakan [praktik terbaik AWS penandaan](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html) untuk membuat kumpulan tag yang konsisten untuk memenuhi persyaratan organisasi Anda.

Anda dapat bekerja dengan tag menggunakan konsol Athena atau operasi API. 

**Topics**
+ [Dasar-dasar tag](#tag-basics)
+ [Batasan tanda](#tag-restrictions)
+ [Bekerja dengan tag untuk kelompok kerja](tags-console.md)
+ [Gunakan operasi API dan AWS CLI tag](tags-operations.md)
+ [Gunakan kebijakan kontrol akses IAM berbasis tag](tags-access-control.md)

## Dasar-dasar tag
<a name="tag-basics"></a>

Tag adalah label yang Anda tetapkan ke sumber daya Athena. Setiap tag terdiri dari satu kunci dan satu nilai opsional, yang keduanya Anda tentukan sendiri.

Tag memungkinkan Anda untuk mengkategorikan AWS sumber daya Anda dengan cara yang berbeda. Misalnya, Anda dapat menentukan satu set tag untuk grup kerja akun Anda yang membantu Anda melacak setiap pemilik atau tujuan grup kerja.

Anda dapat menambahkan tag saat membuat grup kerja Athena atau katalog data baru, atau Anda dapat menambahkan, mengedit, atau menghapus tag dari tag tersebut. Anda dapat mengedit tag di konsol. Untuk menggunakan operasi API untuk mengedit tag, hapus tag lama dan tambahkan yang baru. Jika Anda menghapus sebuah sumber daya, tag apa pun untuk sumber daya tersebut juga ikut dihapus.

Athena tidak secara otomatis menetapkan tag ke sumber daya Anda. Anda dapat mengedit kunci dan nilai tanda, dan dapat menghapus tanda dari sumber daya kapan saja. Anda dapat mengatur nilai tanda ke string kosong, tetapi tidak dapat mengatur nilai tanda ke null. Jangan menambahkan kunci tag duplikat ke sumber daya yang sama. Jika Anda melakukannya, Athena mengeluarkan pesan kesalahan. Jika Anda menggunakan **TagResource** tindakan untuk menandai sumber daya menggunakan kunci tag yang ada, nilai tag baru akan menimpa nilai lama.

Di IAM, Anda dapat mengontrol pengguna mana di akun Amazon Web Services Anda yang memiliki izin untuk membuat, mengedit, menghapus, atau mencantumkan tag. Untuk informasi selengkapnya, lihat [Gunakan kebijakan kontrol akses IAM berbasis tag](tags-access-control.md).

Untuk daftar lengkap tindakan tag Amazon Athena, lihat nama tindakan API di Referensi API [Amazon Athena](https://docs.aws.amazon.com/athena/latest/APIReference/).

Anda dapat menggunakan tag untuk penagihan. Untuk informasi selengkapnya, lihat [Menggunakan tag untuk penagihan](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html) di *Panduan AWS Manajemen Penagihan dan Biaya Pengguna*.

Untuk informasi selengkapnya, lihat [Batasan tanda](#tag-restrictions).

## Batasan tanda
<a name="tag-restrictions"></a>

Tag memiliki batasan berikut:
+ Di Athena, Anda dapat menandai grup kerja, katalog data, dan reservasi kapasitas. Anda tidak dapat menandai kueri.
+ Jumlah maksimum tanda per sumber daya adalah 50. Untuk tetap dalam batas, tinjau dan hapus tag yang tidak digunakan.
+ Untuk setiap sumber daya, setiap kunci tanda harus unik, dan setiap kunci tanda hanya dapat memuat satu nilai. Jangan menambahkan kunci tag duplikat secara bersamaan ke sumber daya yang sama. Jika Anda melakukannya, Athena mengeluarkan pesan kesalahan. Jika Anda menandai sumber daya menggunakan kunci tag yang ada dalam `TagResource` tindakan terpisah, nilai tag baru akan menimpa nilai lama.
+ Panjang kunci tag adalah 1-128 karakter Unicode di UTF-8.
+ Panjang nilai tag adalah 0-256 karakter Unicode di UTF-8.

  Operasi penandaan, seperti menambahkan, mengedit, menghapus, atau mencantumkan tag, mengharuskan Anda menentukan ARN untuk sumber daya grup kerja.
+ Athena memungkinkan Anda untuk menggunakan huruf, angka, spasi yang diwakili dalam UTF-8, dan karakter berikut: \$1 - =. \$1:/@.
+ Kunci dan nilai tag peka terhadap huruf besar dan kecil.
+ `"aws:"`Awalan dalam kunci tag dicadangkan untuk AWS digunakan. Anda tidak dapat mengedit atau menghapus kunci tag dengan awalan ini. Tag dengan awalan ini tidak dihitung terhadap batas tag per sumber daya Anda.
+ Tag yang Anda tetapkan hanya tersedia untuk akun Amazon Web Services Anda.

# Bekerja dengan tag untuk kelompok kerja
<a name="tags-console"></a>

Menggunakan konsol Athena, Anda dapat melihat tag mana yang digunakan oleh setiap grup kerja di akun Anda. Anda dapat melihat tag berdasarkan workgroup saja. Anda juga dapat menggunakan konsol Athena untuk menerapkan, mengedit, atau menghapus tag dari satu grup kerja pada satu waktu.

Anda dapat mencari workgroup menggunakan tag yang Anda buat.

**Topics**
+ [Menampilkan tag untuk kelompok kerja individu](#tags-display)
+ [Menambahkan dan menghapus tag pada workgroup individual](#tags-add-delete)

## Menampilkan tag untuk kelompok kerja individu
<a name="tags-display"></a>

**Untuk menampilkan tag untuk grup kerja individual di konsol Athena**

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

1. Jika panel navigasi konsol tidak terlihat, pilih menu ekspansi di sebelah kiri.  
![\[Pilih menu ekspansi.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/nav-pane-expansion.png)

1. Pada menu navigasi, pilih **Workgroups**, lalu pilih workgroup yang Anda inginkan.

1. Lakukan salah satu tindakan berikut:
   + Pilih tab **Tanda**. Jika daftar tag panjang, gunakan kotak pencarian.
   + Pilih **Edit**, lalu gulir ke bawah ke bagian **Tag**.

## Menambahkan dan menghapus tag pada workgroup individual
<a name="tags-add-delete"></a>

Anda dapat mengelola tag untuk grup kerja individual langsung dari tab **Workgroups**.

**catatan**  
Jika Anda ingin pengguna menambahkan tag saat mereka membuat grup kerja di konsol atau meneruskan tag saat mereka menggunakan **CreateWorkGroup** tindakan, pastikan Anda memberikan izin IAM kepada pengguna dan tindakan. **TagResource** **CreateWorkGroup**

**Untuk menambahkan tag saat Anda membuat workgroup baru**

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

1. Pada menu navigasi, pilih **Workgroups**.

1. Pilih **Buat workgroup** dan isi nilai sesuai kebutuhan. Untuk langkah mendetail, lihat [Buat grup kerja](creating-workgroups.md).

1. Di bagian **Tag**, tambahkan satu atau beberapa tag dengan menentukan kunci dan nilai. Jangan menambahkan kunci tag duplikat secara bersamaan ke workgroup yang sama. Jika Anda melakukannya, Athena mengeluarkan pesan kesalahan. Untuk informasi selengkapnya, lihat [Batasan tanda](tags.md#tag-restrictions).

1. Setelah selesai, pilih **Buat grup kerja**.

**Untuk menambah atau mengedit tag ke workgroup yang ada**

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

1. Di panel navigasi, pilih **Workgroups**.

1. Pilih workgroup yang ingin Anda modifikasi.

1. Lakukan salah satu tindakan berikut:
   + Pilih tab **Tag**, lalu pilih **Kelola tag**. 
   + Pilih **Edit**, lalu gulir ke bawah ke bagian **Tag**.

1. Tentukan kunci dan nilai untuk setiap tag. Untuk informasi selengkapnya, lihat [Batasan tanda](tags.md#tag-restrictions).

1. Pilih **Simpan**.

**Untuk menghapus tag dari grup kerja individual**

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

1. Di panel navigasi, pilih **Workgroups**.

1. Pilih workgroup yang ingin Anda modifikasi.

1. Lakukan salah satu tindakan berikut:
   + Pilih tab **Tag**, lalu pilih **Kelola tag**. 
   + Pilih **Edit**, lalu gulir ke bawah ke bagian **Tag**.

1. Dalam daftar tag, pilih **Hapus** untuk tag yang ingin Anda hapus, lalu pilih **Simpan**.

# Gunakan operasi API dan AWS CLI tag
<a name="tags-operations"></a>

Gunakan operasi tag berikut untuk menambah, menghapus, atau mencantumkan tag pada sumber daya.


****  

| API | CLI | Deskripsi tindakan | 
| --- | --- | --- | 
| TagResource | tag-resource | Tambahkan atau timpa satu atau lebih tag pada sumber daya yang memiliki ARN yang ditentukan. | 
| UntagResource | untag-resource | Hapus satu atau lebih tag dari sumber daya yang memiliki ARN yang ditentukan. | 
| ListTagsForResource | list‑tags‑for‑resource | Buat daftar satu atau lebih tag untuk sumber daya yang memiliki ARN yang ditentukan. | 

**Tambahkan tag saat Anda membuat sumber daya**  
Untuk menambahkan tag saat Anda membuat grup kerja atau katalog data, gunakan `tags` parameter dengan operasi `CreateWorkGroup` atau `CreateDataCatalog` API atau dengan `create-data-catalog` perintah AWS CLI `create-work-group` atau.

## Kelola tag menggunakan tindakan API
<a name="tags-operations-examples-java"></a>

Contoh berikut menunjukkan cara menggunakan tindakan API tag untuk mengelola tag pada grup kerja dan katalog data. Contohnya adalah dalam bahasa pemrograman Java.

### Contoh - TagResource
<a name="tags-operations-examples-java-tag-resource"></a>

Contoh berikut menambahkan dua tag ke workgroup`workgroupA`:

```
List<Tag> tags = new ArrayList<>();
tags.add(new Tag().withKey("tagKey1").withValue("tagValue1"));
tags.add(new Tag().withKey("tagKey2").withValue("tagValue2"));

TagResourceRequest request = new TagResourceRequest()
    .withResourceARN("arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA")
    .withTags(tags);

client.tagResource(request);
```

Contoh berikut menambahkan dua tag ke katalog data`datacatalogA`:

```
List<Tag> tags = new ArrayList<>();
tags.add(new Tag().withKey("tagKey1").withValue("tagValue1"));
tags.add(new Tag().withKey("tagKey2").withValue("tagValue2"));

TagResourceRequest request = new TagResourceRequest()
    .withResourceARN("arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA")
    .withTags(tags);

client.tagResource(request);
```

**catatan**  
Jangan menambahkan kunci tag duplikat ke sumber daya yang sama. Jika Anda melakukannya, Athena mengeluarkan pesan kesalahan. Jika Anda menandai sumber daya menggunakan kunci tag yang ada dalam `TagResource` tindakan terpisah, nilai tag baru akan menimpa nilai lama.

### Contoh - UntagResource
<a name="tags-operations-examples-java-untag-resource"></a>

Contoh berikut menghapus `tagKey2` dari workgroup`workgroupA`:

```
List<String> tagKeys = new ArrayList<>();
tagKeys.add("tagKey2");

UntagResourceRequest request = new UntagResourceRequest()
    .withResourceARN("arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA")
    .withTagKeys(tagKeys);

client.untagResource(request);
```

Contoh berikut menghapus `tagKey2` dari katalog data`datacatalogA`:

```
List<String> tagKeys = new ArrayList<>();
tagKeys.add("tagKey2");

UntagResourceRequest request = new UntagResourceRequest()
    .withResourceARN("arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA")
    .withTagKeys(tagKeys);

client.untagResource(request);
```

### Contoh - ListTagsForResource
<a name="tags-operations-examples-java-list-tags-for-resource"></a>

Contoh berikut mencantumkan tag untuk workgroup`workgroupA`:

```
ListTagsForResourceRequest request = new ListTagsForResourceRequest()
    .withResourceARN("arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA");

ListTagsForResourceResult result = client.listTagsForResource(request);

List<Tag> resultTags = result.getTags();
```

Contoh berikut mencantumkan tag untuk katalog data`datacatalogA`:

```
ListTagsForResourceRequest request = new ListTagsForResourceRequest()
    .withResourceARN("arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA");

ListTagsForResourceResult result = client.listTagsForResource(request);

List<Tag> resultTags = result.getTags();
```

## Mengelola tag menggunakan AWS CLI
<a name="tags-operations-examples-cli"></a>

Contoh berikut menunjukkan cara menggunakan AWS CLI untuk membuat dan mengelola tag pada katalog data.

### Tambahkan tag ke sumber daya: tag-resource
<a name="tags-operations-examples-cli-tag-resource"></a>

`tag-resource`Perintah menambahkan satu atau lebih tag ke sumber daya tertentu.

**Sintaksis**  
`aws athena tag-resource --resource-arn arn:aws:athena:region:account_id:datacatalog/catalog_name --tags Key=string,Value=string Key=string,Value=string`

`--resource-arn`Parameter menentukan sumber daya yang tag ditambahkan. `--tags`Parameter menentukan daftar pasangan kunci-nilai yang dipisahkan spasi untuk ditambahkan sebagai tag ke sumber daya. 

**Example**  
Contoh berikut menambahkan tag ke katalog `mydatacatalog` data.  

```
aws athena tag-resource --resource-arn arn:aws:athena:us-east-1:111122223333:datacatalog/mydatacatalog --tags Key=Color,Value=Orange Key=Time,Value=Now
```
Untuk menunjukkan hasilnya, gunakan `list-tags-for-resource` perintah.   
Untuk informasi tentang menambahkan tag saat menggunakan `create-data-catalog` perintah, lihat[Mendaftarkan katalog: Create-data-catalog](datastores-hive-cli.md#datastores-hive-cli-registering-a-catalog).

### Daftar tag untuk sumber daya: list-tags-for-resource
<a name="tags-operations-examples-cli-list-tags-for-resource"></a>

`list-tags-for-resource`Perintah mencantumkan tag untuk sumber daya yang ditentukan.

**Sintaksis**  
`aws athena list-tags-for-resource --resource-arn arn:aws:athena:region:account_id:datacatalog/catalog_name`

`--resource-arn`Parameter menentukan sumber daya yang tag terdaftar. 

Contoh berikut mencantumkan tag untuk katalog `mydatacatalog` data.

```
aws athena list-tags-for-resource --resource-arn arn:aws:athena:us-east-1:111122223333:datacatalog/mydatacatalog
```

Hasil contoh berikut adalah dalam format JSON.

```
{
    "Tags": [
        {
            "Key": "Time",
            "Value": "Now"
        },
        {
            "Key": "Color",
            "Value": "Orange"
        }
    ]
}
```

### Hapus tag dari sumber daya: untag-resource
<a name="tags-operations-examples-cli-untag-resource"></a>

`untag-resource`Perintah menghapus kunci tag yang ditentukan dan nilai terkaitnya dari sumber daya yang ditentukan.

**Sintaksis**  
`aws athena untag-resource --resource-arn arn:aws:athena:region:account_id:datacatalog/catalog_name --tag-keys key_name [key_name ...]` 

`--resource-arn`Parameter menentukan sumber daya dari mana tag dihapus. `--tag-keys`Parameter mengambil daftar nama kunci yang dipisahkan spasi. Untuk setiap nama kunci yang ditentukan, `untag-resource` perintah menghapus kunci dan nilainya.

Contoh berikut menghapus `Time` kunci `Color` dan dan nilainya dari sumber daya `mydatacatalog` katalog.

```
aws athena untag-resource --resource-arn arn:aws:athena:us-east-1:111122223333:datacatalog/mydatacatalog --tag-keys Color Time
```

# Gunakan kebijakan kontrol akses IAM berbasis tag
<a name="tags-access-control"></a>

Memiliki tag memungkinkan Anda menulis kebijakan IAM yang menyertakan `Condition` blok untuk mengontrol akses ke sumber daya berdasarkan tag-nya. Bagian ini mencakup contoh kebijakan tag untuk sumber daya workgroup dan katalog data.

## Contoh kebijakan tag untuk kelompok kerja
<a name="tag-policy-examples-workgroups"></a>

### Contoh - Kebijakan penandaan dasar
<a name="tag-policy-examples-workgroups-basic"></a>

Kebijakan IAM berikut memungkinkan Anda menjalankan kueri dan berinteraksi dengan tag untuk grup kerja bernama: `workgroupA`

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Effect": "Allow",
            "Action": [
                "athena:ListWorkGroups",
                "athena:ListEngineVersions",
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:GetWorkGroup",
                "athena:TagResource",
                "athena:UntagResource",
                "athena:ListTagsForResource",
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:BatchGetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery",
                "athena:CreatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:ListPreparedStatements",
                "athena:UpdatePreparedStatement",
                "athena:DeletePreparedStatement"
            ],
            "Resource": "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA"
        }
    ]
}
```

------

### Contoh - Blok kebijakan yang menyangkal tindakan pada workgroup berdasarkan kunci tag dan pasangan nilai tag
<a name="tag-policy-examples-workgroups-basic"></a>

Tag yang terkait dengan sumber daya seperti workgroup disebut sebagai tag sumber daya. Tag sumber daya memungkinkan Anda menulis blok kebijakan seperti berikut ini yang menolak tindakan yang tercantum pada grup kerja mana pun yang ditandai dengan pasangan nilai kunci seperti,. `stack` `production`

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "athena:GetWorkGroup",
                "athena:UpdateWorkGroup",
                "athena:DeleteWorkGroup",
                "athena:TagResource",
                "athena:UntagResource",
                "athena:ListTagsForResource",
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:BatchGetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery",
                "athena:CreatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:ListPreparedStatements",
                "athena:UpdatePreparedStatement",
                "athena:DeletePreparedStatement"
            ],
            "Resource": "arn:aws:athena:us-east-1:123456789012:workgroup/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/stack": "production"
                }
            }
        }
    ]
}
```

------

### Contoh - Blok kebijakan yang membatasi permintaan tindakan perubahan tag ke tag tertentu
<a name="tag-policy-examples-workgroups-restricted-specific"></a>

Tag yang diteruskan sebagai parameter ke operasi yang mengubah tag (misalnya,`TagResource`,`UntagResource`, atau `CreateWorkGroup` dengan tag) disebut sebagai tag permintaan. Contoh blok kebijakan berikut memungkinkan `CreateWorkGroup` operasi hanya jika salah satu tag yang diteruskan memiliki kunci `costcenter` dan nilai`1`,`2`, atau`3`.

**catatan**  
Jika Anda ingin mengizinkan peran IAM untuk meneruskan tag sebagai bagian dari `CreateWorkGroup` operasi, pastikan Anda memberikan izin peran ke `TagResource` dan `CreateWorkGroup` tindakan.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateWorkGroup",
                "athena:TagResource"
            ],
            "Resource": "arn:aws:athena:us-east-1:123456789012:workgroup/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/costcenter": [
                        "1",
                        "2",
                        "3"
                    ]
                }
            }
        }
    ]
}
```

------

## Contoh kebijakan tag untuk katalog data
<a name="tag-policy-examples-data-catalogs"></a>

### Contoh - Kebijakan penandaan dasar
<a name="tag-policy-examples-data-catalogs-basic"></a>

Kebijakan IAM berikut memungkinkan Anda berinteraksi dengan tag untuk katalog data bernama`datacatalogA`:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListWorkGroups",
                "athena:ListEngineVersions",
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:GetWorkGroup",
                "athena:TagResource",
                "athena:UntagResource",
                "athena:ListTagsForResource",
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:BatchGetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateDataCatalog",
                "athena:GetDataCatalog",
                "athena:UpdateDataCatalog",
                "athena:DeleteDataCatalog",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata",
                "athena:TagResource",
                "athena:UntagResource",
                "athena:ListTagsForResource"
            ],
            "Resource": "arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA"
        }
    ]
}
```

------

### Contoh - Blok kebijakan yang menolak tindakan pada Katalog Data berdasarkan kunci tag dan pasangan nilai tag
<a name="tag-policy-examples-data-catalogs-deny-actions"></a>

Anda dapat menggunakan tag sumber daya untuk menulis blok kebijakan yang menolak tindakan tertentu pada katalog data yang ditandai dengan pasangan nilai kunci tag tertentu. Contoh kebijakan berikut menyangkal tindakan pada katalog data yang memiliki pasangan nilai kunci tag,. `stack` `production`

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "athena:CreateDataCatalog",
                "athena:GetDataCatalog",
                "athena:UpdateDataCatalog",
                "athena:DeleteDataCatalog",
                "athena:GetDatabase",
                "athena:ListDatabases",
                "athena:GetTableMetadata",
                "athena:ListTableMetadata",
                "athena:StartQueryExecution",
                "athena:TagResource",
                "athena:UntagResource",
                "athena:ListTagsForResource"
            ],
            "Resource": "arn:aws:athena:us-east-1:123456789012:datacatalog/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/stack": "production"
                }
            }
        }
    ]
}
```

------

### Contoh - Blok kebijakan yang membatasi permintaan tindakan perubahan tag ke tag tertentu
<a name="tag-policy-examples-data-catalogs-action-specific-tags"></a>

Tag yang diteruskan sebagai parameter ke operasi yang mengubah tag (misalnya,`TagResource`,`UntagResource`, atau `CreateDataCatalog` dengan tag) disebut sebagai tag permintaan. Contoh blok kebijakan berikut memungkinkan `CreateDataCatalog` operasi hanya jika salah satu tag yang diteruskan memiliki kunci `costcenter` dan nilai`1`,`2`, atau`3`.

**catatan**  
Jika Anda ingin mengizinkan peran IAM untuk meneruskan tag sebagai bagian dari `CreateDataCatalog` operasi, pastikan Anda memberikan izin peran ke `TagResource` dan `CreateDataCatalog` tindakan.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateDataCatalog",
                "athena:TagResource"
            ],
            "Resource": "arn:aws:athena:us-east-1:123456789012:datacatalog/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/costcenter": [
                        "1",
                        "2",
                        "3"
                    ]
                }
            }
        }
    ]
}
```

------

# Service Quotas
<a name="service-limits"></a>

**catatan**  
Konsol Service Quotas menyediakan informasi tentang kuota EventBridge. Anda juga dapat menggunakan konsol Service Quotas untuk [meminta kenaikan kuota](https://console.aws.amazon.com/servicequotas/home?region=us-east-1#!/services/athena/quotas) untuk kuota yang dapat disesuaikan. Untuk batasan skema AWS Glue terkait, lihat halaman [AWS Glue titik akhir dan kuota](https://docs.aws.amazon.com/general/latest/gr/glue.html). Untuk informasi umum tentang kuota AWS layanan, lihat [kuota AWS layanan](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) di. *Referensi Umum AWS*

## Kueri
<a name="service-limits-queries"></a>

Akun Anda memiliki kuota terkait kueri berikut untuk Amazon Athena. Untuk detailnya, lihat [titik akhir Amazon Athena dan halaman kuota](https://docs.aws.amazon.com/general/latest/gr/athena.html#amazon-athena-limits). Referensi Umum AWS
+ **Kueri DDL aktif — Jumlah kueri** DDL aktif. DDL kueri termasuk kueri `CREATE TABLE` dan `ALTER TABLE ADD PARTITION`. 
+ Batas **waktu kueri DDL** - Jumlah waktu maksimum dalam hitungan menit kueri DDL dapat dijalankan sebelum dibatalkan.
+ **Active DMLQuery** — Jumlah query DML aktif. Kueri DML meliputi`SELECT`, `CREATE TABLE AS` (CTAS), dan kueri. `INSERT INTO` Kuota spesifik bervariasi menurut AWS Wilayah.
+ Batas **waktu kueri DML—Jumlah** waktu maksimum dalam hitungan menit kueri DML dapat dijalankan sebelum dibatalkan. Anda dapat meminta peningkatan batas waktu ini hingga maksimal 240 menit.

Untuk meminta kenaikan kuota, Anda dapat menggunakan konsol Service [Quotas Athena](https://console.aws.amazon.com/servicequotas/home?region=us-east-1#!/services/athena/quotas).

Athena memproses kueri dengan menetapkan sumber daya berdasarkan beban layanan secara keseluruhan dan jumlah permintaan yang masuk. Kueri Anda mungkin antrian sementara sebelum dijalankan. Proses asynchronous mengambil kueri dari antrian dan menjalankannya pada sumber daya fisik segera setelah sumber daya menjadi tersedia dan selama konfigurasi akun Anda memungkinkan.

Kueri DHTML Aktif dan kuota kueri DDL Aktif mencakup kueri berjalan dan antrian. Misalnya, jika kuota kueri DML Aktif Anda adalah 25 dan total kueri berjalan dan antrian Anda adalah 26, kueri 26 akan menghasilkan kesalahan. TooManyRequestsException 

**catatan**  
Jika Anda ingin mengontrol konkurensi secara langsung untuk kueri yang Anda jalankan di Athena, Anda dapat menggunakan reservasi kapasitas. Untuk informasi selengkapnya, lihat [Kelola kapasitas pemrosesan kueri](capacity-management.md).

### Panjang string kueri
<a name="service-limits-query-string-length"></a>

Maksimum diperbolehkan panjang string kueri adalah 262144 byte, tempat string dikodekan dalam UTF-8. Ini bukan kuota yang dapat disesuaikan. Namun, Anda dapat bekerja di sekitar keterbatasan ini dengan membelah kueri panjang ke beberapa kueri yang lebih kecil. Untuk informasi selengkapnya, lihat[Bagaimana cara meningkatkan panjang string kueri maksimum di Athena?](https://aws.amazon.com/premiumsupport/knowledge-center/athena-query-string-length/)di AWS Pusat Pengetahuan.

## Kelompok kerja
<a name="service-limits-workgroups"></a>

Saat Anda bekerja dengan grup kerja Athena, ingat hal-hal berikut:
+ service quotas Athena dibagi di semua grup kerja dalam akun.
+ Jumlah maksimum grup kerja yang dapat Anda buat per Wilayah di akun adalah 1000.
+ Jumlah maksimum pernyataan yang disiapkan dalam kelompok kerja adalah 1000.
+ Jumlah maksimum tanda per grup log adalah 50. Untuk informasi selengkapnya, lihat [Batasan tanda](tags.md#tag-restrictions). 

## Database, tabel, dan partisi
<a name="service-limits-glue"></a>

Athena menggunakan. AWS Glue Data Catalog[Untuk kuota layanan pada tabel, database, dan partisi (misalnya, jumlah maksimum database atau tabel per akun), lihat AWS Glue titik akhir dan kuota.](https://docs.aws.amazon.com/general/latest/gr/glue.html) Perhatikan bahwa, meskipun Athena mendukung AWS Glue tabel kueri yang memiliki 10 juta partisi, Athena tidak dapat membaca lebih dari 1 juta partisi dalam satu pemindaian.

## Bucket Amazon S3
<a name="service-limits-buckets"></a>

Saat Anda bekerja dengan bucket Amazon S3, ingat hal-hal berikut:
+ Amazon S3 memiliki kuota layanan default 10.000 bucket per akun.
+ Athena membutuhkan bucket terpisah untuk mencatat hasil.
+ Anda dapat meminta peningkatan kuota hingga satu juta bucket Amazon S3 per akun. AWS 

## Kuota panggilan API per akun
<a name="service-limits-api-calls"></a>

Athena APIs memiliki kuota default untuk jumlah panggilan ke API per akun (bukan per kueri). Untuk daftar lengkap kuota default, lihat Tabel [kuota layanan](https://docs.aws.amazon.com/general/latest/gr/athena.html#amazon-athena-limits) dalam panduan. Referensi Umum AWS 

Jika Anda menggunakan salah satu dari ini APIs dan melebihi kuota default untuk jumlah panggilan per detik, atau kapasitas burst di akun Anda, API Athena mengeluarkan kesalahan yang mirip dengan berikut: "ClientError": Terjadi kesalahan ThrottlingException () saat memanggil** operasi: Nilai <API\$1name>terlampaui.” Kurangi jumlah panggilan per detik, atau kapasitas burst untuk API untuk akun ini. 

Anda dapat mengubah kuota Athena untuk panggilan API per akun di konsol [Service](https://console.aws.amazon.com/servicequotas/home?region=us-east-1#!/services/athena/quotas) Quotas Athena. 