Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
ALTER TABLE ADD PARTITION
Menciptakan satu atau lebih kolom partisi untuk tabel. Setiap partisi terdiri dari satu atau lebih kombinasi kolom nama/nilai 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.
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.
Untuk informasi tentang izin tingkat sumber daya yang diperlukan dalam IAM kebijakan (termasukglue:CreatePartition
), lihat AWS Glue APIizin: Referensi tindakan dan sumber daya dan. Konfigurasikan akses ke database dan tabel di AWS Glue Data Catalog Untuk informasi pemecahan masalah tentang izin saat menggunakan Athena, lihatIzinBagian dariMemecahkan masalah di Athenatopik.
Sinopsis
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
Saat Anda menambahkan partisi, Anda menentukan satu atau lebih kolom nama/nilai pasangan untuk partisi dan jalur Amazon S3 tempat file data untuk partisi tersebut berada.
- [JIKA NOTEXISTS]
-
Menyebabkan kesalahan yang akan ditekan jika partisi dengan definisi yang sama sudah ada.
- PARTITION(partition_col_name = partition_col_value [,...])
-
Membuat partisi dengan kombinasi nama kolom/nilai yang Anda tentukan. Lampirkan
partition_col_value
dalam karakter string hanya jika tipe data kolom adalah string. - [LOCATION'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, Amazon S3 lengkap dibangun URI secara otomatis dari lokasi tabel, nama kunci partisi, dan nilai kunci partisi. Untuk informasi selengkapnya, lihat Partisi data Anda.
Pertimbangan
Amazon Athena tidak memaksakan batas tertentu pada jumlah partisi yang dapat Anda tambahkan dalam satu pernyataan. ALTER TABLE ADD PARTITION
DDL 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 TABLEtable_name
ADD IF NOT EXISTS PARTITION (ds='2023-01-02') ALTER TABLEtable_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
Contoh
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');
Ketika tabel bukan untuk data partisi gaya HIVE, LOCATION
klausa diperlukan dan harus menjadi Amazon S3 lengkap URI 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
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
format dibuat di Amazon S3. Anda harus menghapus file-file ini secara manual.partition_value
_$folder$
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 […]