

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

# Membuat tabel
<a name="tables-described"></a>

Meskipun menjalankan crawler adalah metode yang disarankan untuk mengambil inventaris data di penyimpanan data Anda, Anda dapat menambahkan tabel metadata secara manual. AWS Glue Data Catalog Pendekatan ini memungkinkan Anda untuk memiliki kontrol lebih besar atas definisi metadata dan menyesuaikannya sesuai dengan kebutuhan spesifik Anda.

Anda juga dapat menambahkan tabel ke Katalog Data secara manual dengan cara berikut:
+ Gunakan konsol AWS Glue untuk secara manual membuat tabel di AWS Glue Data Catalog. Untuk informasi selengkapnya, lihat [Membuat tabel menggunakan konsol](#console-tables).
+ Gunakan operasi `CreateTable` di [AWS Glue API](aws-glue-api.md) untuk membuat tabel di AWS Glue Data Catalog. Untuk informasi selengkapnya, lihat [CreateTable tindakan (Python: create\$1table)](aws-glue-api-catalog-tables.md#aws-glue-api-catalog-tables-CreateTable).
+ Gunakan CloudFormation templat. Untuk informasi selengkapnya, lihat [AWS CloudFormation untuk AWS Glue](populate-with-cloudformation-templates.md).

Ketika Anda menentukan sebuah tabel secara manual dengan menggunakan konsol atau API, Anda menentukan skema tabel dan nilai dari sebuah bidang klasifikasi yang menunjukkan jenis dan format data dalam sumber data. Jika sebuah crawler membuat tabel, maka format data dan skemanya ditentukan oleh pengklasifikasi bawaan atau pengklasifikasi kustom. Untuk informasi lebih lanjut tentang membuat sebuah tabel menggunakan konsol AWS Glue, lihat [Membuat tabel menggunakan konsol](#console-tables).

**Topics**
+ [Partisi tabel](#tables-partition)
+ [Tautan sumber daya tabel](#tables-resource-links)
+ [Membuat tabel menggunakan konsol](#console-tables)
+ [Membuat indeks partisi](partition-indexes.md)
+ [Memperbarui tabel Katalog Data yang dibuat secara manual menggunakan crawler](#update-manual-tables)
+ [Properti tabel Katalog Data](#table-properties)

## Partisi tabel
<a name="tables-partition"></a>

Sebuah definisi tabel AWS Glue dari sebuah folder Amazon Simple Storage Service (Amazon S3) dapat menggambarkan sebuah tabel yang dipartisi. Sebagai contoh, untuk meningkatkan performa kueri, sebuah tabel yang dipartisi mungkin memisahkan data bulanan ke file yang berbeda dengan menggunakan nama bulan sebagai kunci. Di AWS Glue, definisi tabel termasuk kunci partisi dari sebuah tabel. Saat AWS Glue mengevaluasi data dalam folder Amazon S3 untuk membuat katalog sebuah tabel, ia menentukan apakah tabel individu atau tabel dipartisi ditambahkan. 

Anda dapat membuat indeks partisi pada sebuah tabel untuk mengambil subset dari partisi alih-alih memuat semua partisi dalam tabel. Untuk informasi tentang cara menggunakan indeks partisi, lihat [Membuat indeks partisi](partition-indexes.md).

Semua syarat berikut harus BETUL untuk AWS Glue untuk membuat sebuah tabel dipartisi untuk folder Amazon S3:
+ Skema file-nya serupa, seperti yang ditentukan oleh AWS Glue.
+ Format data dari file tersebut sama.
+ Format kompresi dari file tersebut sama.

Sebagai contoh, Anda mungkin memiliki sebuah bucket Amazon S3 bernama `my-app-bucket`, tempat Anda menyimpan data penjualan aplikasi iOS dan Android. Data tersebut dipartisi berdasarkan tahun, bulan, dan hari. File data untuk penjualan iOS dan Android memiliki skema yang sama, format data, dan format kompresi yang juga sama. Dalam AWS Glue Data Catalog, AWS Glue crawler membuat satu definisi tabel dengan kunci partisi untuk tahun, bulan, dan hari. 

Pendaftaran Amazon S3 atas `my-app-bucket` berikut ini menunjukkan beberapa partisi. Simbol `=` digunakan untuk menetapkan nilai kunci partisi. 

```
   my-app-bucket/Sales/year=2010/month=feb/day=1/iOS.csv
   my-app-bucket/Sales/year=2010/month=feb/day=1/Android.csv
   my-app-bucket/Sales/year=2010/month=feb/day=2/iOS.csv
   my-app-bucket/Sales/year=2010/month=feb/day=2/Android.csv
   ...
   my-app-bucket/Sales/year=2017/month=feb/day=4/iOS.csv
   my-app-bucket/Sales/year=2017/month=feb/day=4/Android.csv
```

## Tautan sumber daya tabel
<a name="tables-resource-links"></a>


|  | 
| --- |
| AWS GlueKonsol baru-baru ini diperbarui. Versi konsol saat ini tidak mendukung Tautan Sumber Daya Tabel. | 

Katalog Data juga dapat berisi *tautan sumber daya* ke tabel. Sebuah tautan sumber daya tabel adalah tautan ke tabel lokal atau bersama. Saat ini, Anda dapat membuat tautan sumber daya hanya di AWS Lake Formation. Setelah Anda membuat tautan sumber daya ke sebuah tabel, Anda dapat menggunakan nama tautan sumber daya di mana pun Anda akan menggunakan nama tabel tersebut. Bersama dengan tabel yang Anda miliki atau yang dibagi dengan Anda, tautan sumber daya tabel dikembalikan oleh `glue:GetTables()` dan muncul sebagai entri pada halaman **Tabel** pada konsol AWS Glue.

Katalog Data juga dapat berisi tautan sumber daya basis data.

Untuk informasi lebih lanjut tentang tautan sumber daya, lihat [Membuat Tautan Sumber Daya](https://docs.aws.amazon.com/lake-formation/latest/dg/creating-resource-links.html) di *Panduan Developer AWS Lake Formation *.

## Membuat tabel menggunakan konsol
<a name="console-tables"></a>

Tabel dalam AWS Glue Data Catalog adalah definisi metadata yang mewakili data dalam penyimpanan data. Anda membuat tabel ketika Anda menjalankan sebuah crawler, atau Anda dapat membuat sebuah tabel secara manual di konsol AWS Glue . Daftar **Tabel** di konsol AWS Glue menampilkan nilai-nilai metadata tabel Anda. Anda menggunakan definisi tabel untuk menentukan sumber dan target ketika Anda membuat tugas ETL (ekstrak, transform, and load). 

**catatan**  
Dengan perubahan terbaru pada konsol AWS manajemen, Anda mungkin perlu mengubah peran IAM yang ada untuk mendapatkan [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-SearchTables](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-SearchTables)izin. Untuk pembuatan peran baru, izin `SearchTables` API telah ditambahkan sebagai default.

Untuk memulai, masuk ke Konsol Manajemen AWS dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). Pilih tab **Tabel**, dan gunakan tombol **Tambahkan tabel** untuk membuat tabel baik dengan crawler atau dengan mengetik atribut secara manual. 

### Menambahkan tabel di konsol
<a name="console-tables-add"></a>

Untuk menggunakan sebuah crawler untuk menambahkan tabel, pilih **Tambahkan tabel**, **Tambahkan tabel menggunakan crawler**. Kemudian ikuti instruksi di penuntun **Tambahkan crawler**. Ketika sebuah crawler berjalan, tabel ditambahkan ke AWS Glue Data Catalog. Untuk informasi selengkapnya, lihat [Menggunakan crawler untuk mengisi Katalog Data](add-crawler.md).

Jika Anda tahu atribut yang diperlukan untuk membuat definisi tabel Amazon Simple Storage Service (Amazon S3) dalam Katalog Data Anda, maka Anda dapat membuatnya dengan penuntun tabel. Pilih **Tambahkan tabel**, **Tambahkan Tabel secara manual**, lalu ikuti petunjuk di penuntun **Tambahkan tabel**.

Saat menambahkan tabel secara manual melalui konsol, pertimbangkan hal-hal berikut:
+ Jika Anda berencana untuk mengakses tabel dari Amazon Athena, maka berikan nama dengan hanya karakter alfanumerik dan garis bawah. Untuk informasi selengkapnya, lihat [Nama Athena](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html#ate-table-database-and-column-names-allow-only-underscore-special-characters).
+ Lokasi sumber data Anda harus sebuah path Amazon S3.
+ Format data dari data tersebut harus sesuai dengan salah satu format yang tercantum di penuntun. Klasifikasi yang sesuai SerDe,, dan properti tabel lainnya secara otomatis diisi berdasarkan format yang dipilih. Anda dapat menentukan tabel dengan format berikut ini:   
**Avro**  
Format biner Apache Avro JSON.  
**CSV**  
Nilai dipisahkan karakter. Anda juga menentukan pembatas baik koma, pipa, titik koma, tab, atau Ctrl-A.  
**JSON**  
JavaScript Notasi Objek.  
**XML**  
Format Markup Extensible Language. Tentukan tag XML yang mendefinisikan sebuah baris dalam data. Kolom didefinisikan dalam tag baris.  
**Parquet**  
penyimpanan kolumnar Apache Parquet.  
**ORC**  
Format file Row Columnar (ORC) yang dioptimalkan. Format yang dirancang untuk menyimpan data Hive secara efisien.
+ Anda dapat menentukan sebuah kunci partisi untuk tabel.
+ Saat ini, tabel dipartisi yang Anda buat dengan konsol tidak dapat digunakan dalam tugas ETL.

### Atribut tabel
<a name="console-tables-attributes"></a>

Berikut ini adalah beberapa atribut penting dari tabel Anda:

**Nama**  
Nama ditentukan ketika tabel dibuat, dan Anda tidak dapat mengubahnya. Anda mengacu pada nama tabel di banyak operasi AWS Glue.

**Basis Data**  
Objek kontainer di mana tabel Anda berada. Objek ini berisi organisasi tabel Anda yang ada di dalam AWS Glue Data Catalog dan mungkin berbeda dari organisasi di penyimpanan data Anda. Ketika Anda menghapus basis data, semua tabel yang terkandung dalam basis data juga dihapus dari Katalog Data. 

**Deskripsi**  
Deskripsi tabel. Anda dapat menulis deskripsi untuk membantu Anda memahami isi tabel tersebut.

**Format tabel**  
Tentukan membuat AWS Glue tabel standar, atau tabel dalam format Apache Iceberg.  
Katalog Data menyediakan opsi pengoptimalan tabel berikut untuk mengelola penyimpanan tabel dan meningkatkan kinerja kueri untuk tabel Iceberg.  
+ **Pemadatan** — File data digabungkan dan ditulis ulang menghapus data usang dan mengkonsolidasikan data yang terfragmentasi menjadi file yang lebih besar dan lebih efisien.
+ **Retensi snapshot** — Snapshot adalah versi stempel waktu dari tabel Iceberg. Konfigurasi retensi snapshot memungkinkan pelanggan untuk menerapkan berapa lama untuk menyimpan snapshot dan berapa banyak snapshot yang akan disimpan. Mengonfigurasi pengoptimal retensi snapshot dapat membantu mengelola overhead penyimpanan dengan menghapus snapshot yang lebih lama dan tidak perlu serta file yang mendasarinya yang terkait.
+ **Penghapusan file yatim piatu — File** yatim piatu adalah file yang tidak lagi direferensikan oleh metadata tabel Iceberg. File-file ini dapat terakumulasi dari waktu ke waktu, terutama setelah operasi seperti penghapusan tabel atau pekerjaan ETL yang gagal. Mengaktifkan penghapusan file yatim memungkinkan AWS Glue untuk secara berkala mengidentifikasi dan menghapus file-file yang tidak perlu ini, membebaskan penyimpanan.
Untuk informasi selengkapnya, lihat [Mengoptimalkan tabel Iceberg](table-optimizers.md).

**Konfigurasi optimasi**  
Anda dapat menggunakan pengaturan default atau menyesuaikan pengaturan untuk mengaktifkan pengoptimal tabel.

**IAM Role**  
 Untuk menjalankan pengoptimal tabel, layanan mengasumsikan peran IAM atas nama Anda. Anda dapat memilih peran IAM menggunakan drop-down. Pastikan peran memiliki izin yang diperlukan untuk mengaktifkan pemadatan.  
Untuk mempelajari lebih lanjut tentang izin yang diperlukan untuk peran IAM, lihat. [Prasyarat pengoptimalan tabel](optimization-prerequisites.md)

**Lokasi**  
Penunjuk ke lokasi data dalam penyimpanan data yang diwakili oleh definisi tabel ini.

**Klasifikasi**  
Nilai kategorisasi yang diberikan saat tabel dibuat. Biasanya, nilai ini ditulis ketika crawler menjalankan dan menentukan format data sumber.

**Terakhir diperbarui**  
Waktu dan tanggal (UTC) saat tabel ini diperbarui dalam Katalog Data.

**Tanggal ditambahkan**  
Waktu dan tanggal (UTC) saat tabel ini ditambahkan ke Katalog Data.

**Usang**  
Jika AWS Glue menemukan bahwa tabel di Katalog Data tidak lagi ada di penyimpanan data semula, maka ia akan menandai tabel sebagai tidak lagi digunakan dalam katalog data. Jika Anda menjalankan tugas yang me-referensi tabel yang tidak lagi digunakan, tugas mungkin gagal. Edit tugas yang me-referensi tabel yang tidak lagi digunakan untuk menghapusnya sebagai sumber dan target. Kami sarankan Anda menghapus tabel yang tidak lagi digunakan ketika tidak lagi diperlukan. 

**Koneksi**  
Jika AWS Glue memerlukan koneksi ke penyimpanan data Anda, maka nama koneksi dikaitkan dengan tabel tersebut.

### Melihat dan mengelola detail tabel
<a name="console-tables-details"></a>

Untuk melihat detail tabel yang ada, pilih nama tabel dalam daftar, dan kemudian pilih **Tindakan, Lihat detail**.

Detail tabel termasuk properti dari tabel Anda dan skema-nya. Tampilan ini menampilkan skema tabel, termasuk nama kolom dalam urutan yang ditetapkan untuk tabel, tipe data, dan kolom kunci untuk partisi. Jika kolom merupakan tipe kolom yang kompleks, Anda dapat memilih **Lihat properti** untuk menampilkan detail struktur dari bidang itu, seperti yang ditunjukkan dalam contoh berikut:

```
{
"StorageDescriptor": 
    {
      "cols": {
         "FieldSchema": [
           {
             "name": "primary-1",
             "type": "CHAR",
             "comment": ""
           },
           {
             "name": "second ",
             "type": "STRING",
             "comment": ""
           }
         ]
      },
      "location": "s3://aws-logs-111122223333-us-east-1",
      "inputFormat": "",
      "outputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
      "compressed": "false", 
      "numBuckets": "0",
      "SerDeInfo": {
           "name": "",
           "serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde",
           "parameters": {
               "separatorChar": "|"
            }
      },
      "bucketCols": [],
      "sortCols": [],
      "parameters": {},
      "SkewedInfo": {},
      "storedAsSubDirectories": "false"
    },
    "parameters": {
       "classification": "csv"
    }
}
```

Untuk informasi lebih lanjut tentang properti tabel, seperti `StorageDescriptor`, lihat [StorageDescriptor struktur](aws-glue-api-catalog-tables.md#aws-glue-api-catalog-tables-StorageDescriptor).

Untuk mengubah skema tabel, pilih **Edit skema** untuk menambah dan menghapus kolom, mengubah nama kolom, dan mengubah tipe data.

 Untuk membandingkan versi tabel yang berbeda, termasuk skemanya, pilih **Bandingkan versi** untuk melihat side-by-side perbandingan dua versi skema untuk tabel. Untuk informasi selengkapnya, lihat [Membandingkan versi skema tabel](#console-tables-schema-comparison). 

Untuk menampilkan file yang membentuk sebuah partisi Amazon S3, pilih **Lihat partisi**. Untuk tabel Amazon S3, kolom **Kunci** menampilkan kunci partisi yang digunakan untuk partisi tabel di penyimpanan data sumber. Pemartisian adalah cara untuk membagi tabel menjadi bagian-bagian terkait berdasarkan nilai-nilai kolom kunci, seperti tanggal, lokasi, atau departemen. Untuk informasi lebih lanjut tentang partisi, cari di internet untuk informasi tentang "pemartisian hive."

**catatan**  
Untuk mendapatkan step-by-step panduan untuk melihat detail tabel, lihat tutorial **Jelajahi tabel** di konsol.

### Membandingkan versi skema tabel
<a name="console-tables-schema-comparison"></a>

 Saat membandingkan dua versi skema tabel, Anda dapat membandingkan perubahan baris bersarang dengan memperluas dan menciutkan baris bersarang, membandingkan skema dua versi side-by-side, dan melihat properti tabel. side-by-side 

 Untuk membandingkan versi 

1.  Dari AWS Glue konsol, pilih **Tabel**, lalu **Tindakan** dan pilih **Bandingkan versi**.   
![\[Tangkapan layar menunjukkan tombol Tindakan saat dipilih. Menu tarik-turun menampilkan opsi Bandingkan versi.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/catalog-table-compare-versions.png)

1.  Pilih versi untuk membandingkan dengan memilih menu drop-down versi. Saat membandingkan skema, tab Skema disorot dengan warna oranye. 

1.  Ketika Anda membandingkan tabel antara dua versi, skema tabel disajikan kepada Anda di sisi kiri dan kanan layar. Ini memungkinkan Anda untuk menentukan perubahan secara visual dengan membandingkan nama Kolom, tipe data, kunci, dan kolom komentar side-by-side. Ketika ada perubahan, ikon berwarna menampilkan jenis perubahan yang dibuat. 
   +  Dihapus - ditampilkan oleh ikon merah menunjukkan di mana kolom telah dihapus dari versi sebelumnya dari skema tabel. 
   +  Diedit atau Dipindahkan — ditampilkan oleh ikon biru menunjukkan di mana kolom dimodifikasi atau dipindahkan dalam versi skema tabel yang lebih baru. 
   +  Ditambahkan - ditampilkan oleh ikon hijau menunjukkan di mana kolom ditambahkan ke versi yang lebih baru dari skema tabel. 
   +  Perubahan bersarang - ditampilkan oleh ikon kuning menunjukkan di mana kolom bersarang berisi perubahan. Pilih kolom untuk memperluas dan melihat kolom yang telah dihapus, diedit, dipindahkan, atau ditambahkan.   
![\[Tangkapan layar menunjukkan perbandingan skema tabel antara dua versi. Di sisi kiri adalah versi yang lebih lama. Di sisi kanan adalah versi yang lebih baru. Ikon hapus berada di sebelah kolom yang telah dihapus dari versi yang lebih lama dan tidak lagi dalam versi yang lebih baru.\]](http://docs.aws.amazon.com/id_id/glue/latest/dg/images/catalog-table-version-comparison.png)

1.  Gunakan bilah pencarian bidang filter untuk menampilkan bidang berdasarkan karakter yang Anda masukkan di sini. Jika Anda memasukkan nama kolom di salah satu versi tabel, bidang yang difilter akan ditampilkan di kedua versi tabel untuk menunjukkan di mana perubahan telah terjadi. 

1.  Untuk membandingkan properti, pilih **tab Properties**. 

1.  Untuk berhenti membandingkan versi, pilih **Berhenti membandingkan** untuk kembali ke daftar tabel. 

# Membuat indeks partisi
<a name="partition-indexes"></a>

Seiring waktu, ratusan ribu partisi ditambahkan ke sebuah tabel. [GetPartitions API](https://docs.aws.amazon.com/glue/latest/webapi/API_GetPartitions.html) digunakan untuk mengambil partisi dalam tabel. API mengembalikan partisi yang cocok dengan ekspresi yang disediakan dalam permintaan.

**Mari kita ambil tabel *sales\$1data* sebagai contoh yang dipartisi oleh kunci *Negara*, *Kategori*, *Tahun*, Bulan, dan CreationDate.** Jika Anda ingin mendapatkan data penjualan untuk semua item yang dijual untuk kategori *Buku* pada tahun 2020 setelah *2020-08-15*, Anda harus membuat `GetPartitions` permintaan dengan ungkapan “Kategori = 'Buku' dan CreationDate > '2020-08-15'” ke Katalog Data.

Jika tidak ada indeks partisi yang ada pada tabel tersebut, AWS Glue akan memuat semua partisi dari tabel, dan kemudian menyaring partisi yang dimuat dengan menggunakan ekspresi permintaan yang disediakan oleh pengguna dalam permintaan `GetPartitions` tersebut. Kueri membutuhkan lebih banyak waktu untuk dieksekusi karena jumlah partisi yang meningkat pada sebuah tabel yang tidak memiliki indeks. Dengan indeks, kueri `GetPartitions` akan mencoba untuk mengambil subset dari partisi alih-alih memuat semua partisi dalam tabel tersebut.

**Topics**
+ [Tentang indeks partisi](#partition-index-1)
+ [Membuat tabel dengan indeks partisi](#partition-index-creating-table)
+ [Menambahkan indeks partisi ke tabel yang ada](#partition-index-existing-table)
+ [Menjelaskan indeks partisi di atas meja](#partition-index-describing)
+ [Keterbatasan penggunaan indeks partisi](#partition-index-limitations)
+ [Menggunakan indeks untuk panggilan yang dioptimalkan GetPartitions](#partition-index-getpartitions)
+ [Integrasi dengan mesin](#partition-index-integration-engines)

## Tentang indeks partisi
<a name="partition-index-1"></a>

Saat membuat sebuah indeks partisi, Anda menentukan daftar kunci partisi yang sudah ada di tabel tertentu. Indeks partisi merupakan sub daftar dari kunci partisi yang didefinisikan dalam tabel. Sebuah indeks partisi dapat dibuat pada setiap permutasi dari kunci partisi yang didefinisikan pada tabel. Untuk tabel *sales\$1data* di atas, indeks yang mungkin adalah (negara, kategori, CreationDate), (negara, kategori, tahun), (negara, kategori), (negara), (kategori, negara, tahun, bulan), dan sebagainya.

Katalog Data akan menggabungkan nilai-nilai partisi dalam urutan yang ditetapkan pada saat pembuatan indeks. Indeks dibangun secara konsisten sebagai partisi ditambahkan ke tabel tersebut. Indeks dapat dibuat untuk jenis kolom String (string, char, dan varchar), Numeric (int, bigint, long, tinyint, dan smallint), dan Date (yyyy-mm-dd). 

**Tipe data yang didukung**
+ Tanggal — Tanggal dalam format ISO, seperti`YYYY-MM-DD`. Misalnya, tanggal`2020-08-15`. Formatnya menggunakan tanda hubung (‐) untuk memisahkan tahun, bulan, dan hari. Rentang yang diizinkan untuk tanggal untuk pengindeksan mencakup dari hingga`0000-01-01`. `9999-12-31`
+ String — Sebuah string literal tertutup dalam tanda kutip tunggal atau ganda. 
+ Char - Data karakter panjang tetap, dengan panjang tertentu antara 1 dan 255, seperti char (10).
+ Varchar — Data karakter panjang variabel, dengan panjang tertentu antara 1 dan 65535, seperti varchar (10).
+ Numerik - int, bigint, panjang, tinyint, dan smallint

Indeks tipe data Numerik, String, dan Tanggal mendukung =, >, >=, <, <= dan antar operator. Solusi pengindeksan saat ini hanya mendukung operator logis `AND`. Sub-ekspresi dengan operator "LIKE", "IN", "OR", dan "NOT" diabaikan dalam ekspresi untuk penyaringan menggunakan sebuah indeks. Penyaringan untuk sub-ekspresi yang diabaikan dilakukan pada partisi yang diambil setelah menerapkan penyaringan indeks.

Untuk setiap partisi yang ditambahkan ke sebuah tabel, dibuat item indeks yang sesuai. Untuk tabel dengan partisi ‘n’, 1 indeks partisi akan menghasilkan item partisi indeks 'n'. Indeks partisi 'm' pada tabel yang sama akan menghasilkan item indeks partisi 'm\$1n'. Setiap item indeks partisi akan dikenakan biaya sesuai dengan kebijakan harga AWS Glue saat ini untuk penyimpanan katalog data. Untuk detail tentang harga objek penyimpanan, lihat [Harga AWS Glue](https://aws.amazon.com/glue/pricing/).

## Membuat tabel dengan indeks partisi
<a name="partition-index-creating-table"></a>

Anda dapat membuat sebuah indeks partisi saat pembuatan tabel. Permintaan `CreateTable` mengambil daftar [Objek `PartitionIndex`](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-PartitionIndex) sebagai masukan. Maksimum 3 indeks partisi dapat dibuat pada tabel tertentu. Setiap indeks partisi membutuhkan sebuah nama dan sebuah daftar `partitionKeys` yang didefinisikan untuk tabel. Indeks yang dibuat pada tabel dapat diambil menggunakan [API `GetPartitionIndexes`](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-GetPartitionIndexes)

## Menambahkan indeks partisi ke tabel yang ada
<a name="partition-index-existing-table"></a>

Untuk menambahkan sebuah indeks partisi ke tabel yang ada, gunakan operasi `CreatePartitionIndex`. Anda dapat membuat satu `PartitionIndex` per operasi `CreatePartitionIndex`. Menambahkan sebuah indeks tidak akan mempengaruhi ketersediaan tabel, karena tabel terus akan tersedia saat indeks sedang dibuat.

Status indeks untuk partisi tambahan diatur ke MEMBUAT dan pembuatan data indeks dimulai. Jika proses untuk membuat indeks berhasil, maka IndexStatus diperbarui menjadi AKTIF dan untuk proses gagal, status indeks diperbarui menjadi GAGAL. Pembuatan indeks dapat gagal karena beberapa alasan, dan Anda dapat menggunakan operasi `GetPartitionIndexes` untuk mengambil detail kegagalan. Kegagalan yang mungkin terjadi adalah:
+ ENCRYPTED\$1PARTITION\$1ERROR — Pembuatan indeks pada tabel dengan partisi terenkripsi tidak didukung.
+ INVALID\$1PARTITION\$1TYPE\$1DATA\$1ERROR — Terlihat saat nilai `partitionKey` bukan nilai yang valid untuk tipe data `partitionKey` yang sesuai. Sebagai contoh: `partitionKey` dengan tipe data 'int' memiliki nilai 'foo'.
+ MISSING\$1PARTITION\$1VALUE\$1ERROR — Terlihat bila `partitionValue` untuk `indexedKey` tidak ada. Hal ini dapat terjadi ketika sebuah tabel tidak dipartisi secara konsisten.
+ UNSUPPORTED\$1PARTITION\$1CHARACTER\$1ERROR — Terlihat ketika nilai untuk kunci partisi diindeks berisi karakter \$1u0000, \$1u0001 atau \$1u0002
+ INTERNAL\$1ERROR — Sebuah kesalahan internal terjadi saat indeks sedang dibuat. 

## Menjelaskan indeks partisi di atas meja
<a name="partition-index-describing"></a>

Untuk mengambil indeks partisi yang dibuat pada sebuah tabel, gunakan operasi `GetPartitionIndexes`. Respons mengembalikan semua indeks pada tabel tersebut, bersama dengan status saat ini dari masing-masing indeks (`IndexStatus`).

`IndexStatus` untuk sebuah indeks partisi merupakan salah satu dari berikut ini:
+ `CREATING` — Indeks sedang dibuat, dan belum tersedia untuk digunakan.
+ `ACTIVE` — Indeks siap digunakan. Permintaan dapat menggunakan indeks untuk melakukan kueri dioptimalkan.
+ `DELETING` — Indeks saat ini sedang dihapus, dan tidak dapat lagi digunakan. Indeks dalam status aktif dapat dihapus menggunakan permintaan `DeletePartitionIndex`, yang memindahkan status dari AKTIF untuk MENGHAPUS.
+ `FAILED` — Pembuatan indeks pada tabel yang ada gagal. Setiap tabel menyimpan 10 indeks gagal terakhir.

Transisi status yang mungkin terjadi untuk indeks yang dibuat pada tabel yang ada adalah:
+ MEMBUAT → AKTIF → MENGHAPUS
+ MEMBUAT → GAGAL

## Keterbatasan penggunaan indeks partisi
<a name="partition-index-limitations"></a>

Setelah Anda membuat sebuah indeks partisi, perhatikan perubahan ini ke fungsionalitas tabel dan partisi:

**Pembuatan partisi baru (setelah Penambahan Indeks)**  
Setelah sebuah indeks partisi dibuat pada sebuah tabel, semua partisi baru yang ditambahkan ke tabel tersebut akan divalidasi untuk pemeriksaan tipe data untuk kunci diindeks. Nilai partisi kunci diindeks akan divalidasi format tipe data-nya. Jika pemeriksaan tipe data gagal, maka operasi membuat partisi akan gagal. Untuk tabel *sales\$1data*, jika indeks dibuat untuk kunci (kategori, tahun) di mana kategori adalah tipe `string` dan tahun merupakan jenis `int`, maka pembuatan partisi baru dengan nilai TAHUN sebagai "foo" akan gagal.

Setelah indeks diaktifkan, penambahan partisi dengan nilai kunci diindeks yang memiliki karakter U\$10000, U\$100001, dan U\$10002 akan mulai gagal.

**Pembaruan tabel**  
Setelah sebuah indeks partisi dibuat pada sebuah tabel, Anda tidak dapat mengubah nama kunci partisi untuk kunci partisi yang ada, dan Anda tidak dapat mengubah jenis, atau urutan, kunci yang terdaftar dengan indeks tersebut.

## Menggunakan indeks untuk panggilan yang dioptimalkan GetPartitions
<a name="partition-index-getpartitions"></a>

Ketika Anda memanggil `GetPartitions` pada sebuah tabel dengan indeks, Anda dapat menyertakan ekspresi, dan jika berlaku Katalog Data akan menggunakan sebuah indeks jika mungkin. Kunci pertama dari indeks tersebut harus diberikan dalam ekspresi untuk indeks yang akan digunakan dalam penyaringan. Optimalisasi indeks dalam penyaringan diterapkan sebagai upaya terbaik. Katalog Data mencoba untuk menggunakan indeks optimasi sebanyak mungkin, tetapi jika indeks tidak ada, atau operator tidak didukung, maka ia kembali ke implementasi yang ada, yakni memuat semua partisi. 

Untuk tabel *sales\$1data* di atas, mari kita tambahkan indeks [Negara, Kategori, Tahun]. Jika "Negara" tidak diberikan dalam ekspresi, maka indeks terdaftar tidak akan dapat mem-filter partisi menggunakan indeks. Anda dapat menambahkan hingga 3 indeks untuk men-support berbagai pola kueri.

Mari kita mengambil beberapa contoh ekspresi dan melihat bagaimana indeks bekerja pada ekspresi-ekspresi tersebut:


| Ekspresi | Bagaimana indeks akan digunakan | 
| --- | --- | 
|  Negara = 'ID'  |  Indeks akan digunakan untuk mem-filter partisi.  | 
|  Negara = 'AS' dan Kategori = 'Sepatu'  |  Indeks akan digunakan untuk mem-filter partisi.  | 
|  Kategori = 'Sepatu'  |  Indeks tidak akan digunakan karena "negara" tidak ada dalam ekspresi. Semua partisi akan dimuat untuk mengembalikan sebuah respon.  | 
|  Negara = 'AS' dan Kategori = 'Sepatu' serta Tahun > '2018'  |  Indeks akan digunakan untuk mem-filter partisi.  | 
|  Negara = 'AS' dan Kategori = 'Sepatu' dan Tahun > '2018' dan bulan = 2  |  Indeks akan digunakan untuk mengambil semua partisi dengan negara = "AS" dan kategori = "sepatu" dan tahun > 2018. Kemudian, penyaringan pada ekspresi bulan akan dilakukan.  | 
|  Negara = 'AS' DAN Kategori = 'Sepatu' ATAU Tahun > '2018'  |  Indeks tidak akan digunakan karena sebuah operator `OR` ada dalam ekspresi.  | 
|  Negara = 'AS' DAN Kategori = 'Sepatu' DAN (Tahun = 2017 ATAU Tahun = '2018')  |  Indeks akan digunakan untuk mengambil semua partisi dengan negara = "AS" dan kategori = "sepatu", dan kemudian penyaringan pada ekspresi tahun akan dilakukan.  | 
|  Negara di ('AS', 'UK') DAN Kategori = 'Sepatu'  |  Indeks tidak akan digunakan untuk penyaringan karena operator `IN` tidak didukung saat ini.  | 
|  Negara = 'AS' DAN Kategori dalam ('Sepatu', 'Buku')  |  Indeks akan digunakan untuk mengambil semua partisi dengan country = “US”, dan kemudian pemfilteran pada ekspresi Kategori akan dilakukan.  | 
|  Negara = 'AS' DAN Kategori dalam ('Sepatu', 'Buku') DAN (CreationDate> '2023-9-01'  |  Indeks akan digunakan untuk mengambil semua partisi dengan country = “US”, dengan creationDate > '2023-9-01', dan kemudian pemfilteran pada ekspresi Kategori akan dilakukan.  | 

## Integrasi dengan mesin
<a name="partition-index-integration-engines"></a>

Redshift Spectrum, Amazon EMR dan AWS Glue ETL Spark dapat memanfaatkan indeks untuk mengambil partisi setelah indeks DataFrames berada dalam status AKTIF. AWS Glue [Athena](https://docs.aws.amazon.com/athena/latest/ug/glue-best-practices.html#glue-best-practices-partition-index) dan [AWS GlueETL Dynamic frame](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html#aws-glue-programming-etl-partitions-cat-predicates) mengharuskan Anda mengikuti langkah-langkah tambahan untuk memanfaatkan indeks untuk peningkatan kueri.

### Aktifkan penyaringan partisi
<a name="enable-partition-filtering-athena"></a>

Untuk mengaktifkan pemfilteran partisi di Athena, Anda perlu memperbarui properti tabel sebagai berikut:

1. Di AWS Glue konsol, di bawah **Katalog Data**, pilih **Tabel**.

1. Pilih meja.

1. Di bawah **Tindakan**, pilih **Edit tabel**.

1. Di bawah **properti Tabel**, tambahkan yang berikut ini:
   + Kunci — `partition_filtering.enabled`
   + Nilai - `true`

1. Pilih **Terapkan**.

Atau, Anda dapat mengatur parameter ini dengan menjalankan kueri [ALTER TABLE SET PROPERTIES](https://docs.aws.amazon.com/athena/latest/ug/alter-table-set-tblproperties.html) di Athena.

```
ALTER TABLE partition_index.table_with_index
SET TBLPROPERTIES ('partition_filtering.enabled' = 'true')
```

## Memperbarui tabel Katalog Data yang dibuat secara manual menggunakan crawler
<a name="update-manual-tables"></a>

Anda mungkin ingin membuat AWS Glue Data Catalog tabel secara manual dan kemudian memperbaruinya dengan AWS Glue crawler. Crawler yang berjalan berdasarkan jadwal dapat menambahkan partisi baru dan memperbarui tabel dengan perubahan skema. Hal ini juga berlaku untuk tabel yang telah bermigrasi dari metastore Apache Hive.

Caranya, ketika Anda menentukan sebuah crawler, alih-alih menentukan satu atau beberapa penyimpanan data sebagai sumber perayapan, Anda tentukan satu atau beberapa tabel Katalog Data yang ada. Crawler tersebut kemudian melakukan crawling pada penyimpanan data yang ditentukan oleh tabel katalog. Dalam kasus ini, tidak ada tabel baru yang dibuat; sebaliknya, tabel Anda yang dibuat secara manual diperbarui.

Berikut ini adalah alasan-alasan lain mengapa Anda mungkin ingin membuat tabel katalog secara manual dan menentukan tabel katalog sebagai sumber crawler:
+ Anda ingin memilih nama tabel katalog dan tidak bergantung pada algoritme penamaan tabel katalog.
+ Anda ingin mencegah tabel baru dibuat dalam kasus di mana file dengan format yang dapat mengganggu deteksi partisi keliru disimpan di path sumber data.

Untuk informasi selengkapnya, lihat [Langkah 2: Pilih sumber data dan pengklasifikasi](define-crawler-choose-data-sources.md).

## Properti tabel Katalog Data
<a name="table-properties"></a>

 Properti tabel, atau parameter, seperti yang dikenal dalam AWS CLI, adalah string kunci dan nilai yang tidak divalidasi. Anda dapat mengatur properti Anda sendiri di atas tabel untuk mendukung penggunaan Katalog Data di luar AWS Glue. Layanan lain yang menggunakan Katalog Data dapat melakukannya juga. AWS Glue menetapkan beberapa properti tabel saat menjalankan pekerjaan atau crawler. Kecuali dijelaskan lain, properti ini untuk penggunaan internal, kami tidak mendukung bahwa properti tersebut akan terus ada dalam bentuknya saat ini, atau mendukung perilaku produk jika properti ini diubah secara manual. 

 Untuk informasi selengkapnya tentang properti tabel yang ditetapkan oleh AWS Glue crawler, lihat[Parameter diatur pada tabel Katalog Data oleh crawler](table-properties-crawler.md). 