

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

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

Menciptakan satu atau lebih kolom partisi untuk tabel. Setiap partisi terdiri dari satu atau lebih name/value kombinasi kolom yang berbeda. Sebuah direktori data terpisah dibuat untuk setiap kombinasi tertentu, yang dapat meningkatkan performa kueri dalam beberapa keadaan. Kolom dipartisi tidak ada dalam data tabel itu sendiri, jadi jika Anda menggunakan nama kolom yang memiliki nama yang sama dengan kolom dalam tabel itu sendiri, Anda mendapatkan kesalahan. Untuk informasi selengkapnya, lihat [Partisi data Anda](partitions.md).

Di Athena, tabel dan partisi yang harus menggunakan format data yang sama tetapi skema mereka mungkin berbeda. Untuk informasi selengkapnya, lihat [Perbarui tabel dengan partisi](updates-and-partitions.md).

Untuk informasi tentang izin tingkat sumber daya yang diperlukan dalam kebijakan IAM (termasuk`glue:CreatePartition`), lihat [Izin AWS Glue API](https://docs.aws.amazon.com/glue/latest/dg/api-permissions-reference.html): Referensi tindakan dan sumber daya, dan. [Konfigurasikan akses ke database dan tabel di AWS Glue Data Catalog](fine-grained-access-to-glue-resources.md) Untuk informasi pemecahan masalah tentang izin saat menggunakan Athena, lihat[Izin](troubleshooting-athena.md#troubleshooting-athena-permissions)Bagian dari[Memecahkan masalah di Athena](troubleshooting-athena.md)topik.

## Sinopsis
<a name="synopsis"></a>

```
ALTER TABLE table_name ADD [IF NOT EXISTS]
  PARTITION
  (partition_col1_name = partition_col1_value
  [,partition_col2_name = partition_col2_value]
  [,...])
  [LOCATION 'location1']
  [PARTITION
  (partition_colA_name = partition_colA_value
  [,partition_colB_name = partition_colB_value
  [,...])]
  [LOCATION 'location2']
  [,...]
```

## Parameter
<a name="parameters"></a>

Saat Anda menambahkan partisi, Anda menentukan satu atau beberapa name/value pasangan kolom untuk partisi dan jalur Amazon S3 tempat file data untuk partisi itu berada.

**[JIKA TIDAK ADA]**  
Menyebabkan kesalahan yang akan ditekan jika partisi dengan definisi yang sama sudah ada.

**PARTASI (partition\_col\_name=partition\_col\_value [,...])**  
Membuat partisi dengan name/value kombinasi kolom yang Anda tentukan. Lampirkan`partition_col_value`dalam karakter string hanya jika tipe data kolom adalah string.

**[LOKASI 'lokasi']**  
Menentukan direktori di mana untuk menyimpan partisi didefinisikan oleh pernyataan sebelumnya. `LOCATION`Klausa bersifat opsional ketika data menggunakan partisi gaya Hive (). `pk1=v1/pk2=v2/pk3=v3` Dengan partisi gaya HIVE, URI Amazon S3 lengkap dibangun secara otomatis dari lokasi tabel, nama kunci partisi, dan nilai kunci partisi. Untuk informasi selengkapnya, lihat [Partisi data Anda](partitions.md).

## Pertimbangan
<a name="alter-table-add-partition-considerations"></a>

Amazon Athena tidak memaksakan batas tertentu pada jumlah partisi yang dapat Anda tambahkan dalam satu pernyataan DDL. `ALTER TABLE ADD PARTITION` Namun, jika Anda perlu menambahkan sejumlah besar partisi, pertimbangkan untuk memecah operasi menjadi batch yang lebih kecil untuk menghindari potensi masalah kinerja. Contoh berikut menggunakan perintah berturut-turut untuk menambahkan partisi secara individual dan digunakan `IF NOT EXISTS` untuk menghindari penambahan duplikat.

```
ALTER TABLE {{table_name}} ADD IF NOT EXISTS PARTITION (ds='2023-01-01')
ALTER TABLE {{table_name}} ADD IF NOT EXISTS PARTITION (ds='2023-01-02')
ALTER TABLE {{table_name}} ADD IF NOT EXISTS PARTITION (ds='2023-01-03')
```

 Ketika bekerja dengan partisi di Athena, juga perlu diingat hal-hal berikut:
+ Meskipun Athena mendukung AWS Glue tabel kueri yang memiliki 10 juta partisi, Athena tidak dapat membaca lebih dari 1 juta partisi dalam satu pemindaian.
+ Untuk mengoptimalkan kueri Anda dan mengurangi jumlah partisi yang dipindai, pertimbangkan strategi seperti pemangkasan partisi atau menggunakan indeks partisi.

Untuk pertimbangan tambahan mengenai bekerja dengan partisi di Athena, lihat. [Partisi data Anda](partitions.md) 

## Contoh
<a name="examples"></a>

Contoh berikut menambahkan partisi tunggal ke tabel untuk HIVE-style data partisi.

```
ALTER TABLE orders ADD
  PARTITION (dt = '2016-05-14', country = 'IN');
```

Contoh berikut menambahkan beberapa partisi ke tabel untuk HIVE-style data partisi.

```
ALTER TABLE orders ADD
  PARTITION (dt = '2016-05-31', country = 'IN')
  PARTITION (dt = '2016-06-01', country = 'IN');
```

Jika tabel bukan untuk data partisi gaya HIVE, `LOCATION` klausa diperlukan dan harus menjadi URI Amazon S3 lengkap untuk awalan yang berisi data partisi.

```
ALTER TABLE orders ADD
  PARTITION (dt = '2016-05-31', country = 'IN') LOCATION 's3://amzn-s3-demo-bucket/path/to/INDIA_31_May_2016/'
  PARTITION (dt = '2016-06-01', country = 'IN') LOCATION 's3://amzn-s3-demo-bucket/path/to/INDIA_01_June_2016/';
```

Untuk mengabaikan kesalahan ketika partisi sudah ada, gunakan `IF NOT EXISTS` klausa, seperti pada contoh berikut.

```
ALTER TABLE orders ADD IF NOT EXISTS
  PARTITION (dt = '2016-05-14', country = 'IN');
```

## `_$folder$`File byte nol
<a name="alter-table-add-partition-zero-byte-folder-files"></a>

Jika Anda menjalankan `ALTER TABLE ADD PARTITION` pernyataan dan salah menentukan partisi yang sudah ada dan lokasi Amazon S3 yang salah, file placeholder nol byte dari `{{partition_value}}_$folder$` format dibuat di Amazon S3. Anda harus menghapus file-file ini secara manual.

Untuk mencegah hal ini terjadi, gunakan `ADD IF NOT EXISTS` sintaks dalam `ALTER TABLE ADD PARTITION` pernyataan Anda, seperti pada contoh berikut.

```
ALTER TABLE table_name ADD IF NOT EXISTS PARTITION […]
```