Mengubah tipe data kolom - Amazon Athena

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

Mengubah tipe data kolom

Anda mungkin ingin menggunakan jenis kolom yang berbeda ketika tipe yang ada tidak dapat lagi menyimpan jumlah informasi yang diperlukan. Misalnya, nilai kolom ID mungkin melebihi ukuran tipe INT data dan memerlukan penggunaan tipe BIGINT data.

Pertimbangan

Saat berencana menggunakan tipe data yang berbeda untuk kolom, pertimbangkan hal-hal berikut:

  • Dalam kebanyakan kasus, Anda tidak dapat mengubah tipe data kolom secara langsung. Sebagai gantinya, Anda membuat ulang tabel Athena dan menentukan kolom dengan tipe data baru.

  • Hanya tipe data tertentu yang dapat dibaca sebagai tipe data lainnya. Lihat tabel di bagian ini untuk tipe data yang dapat diperlakukan sedemikian rupa.

  • Untuk data di Parket danORC, Anda tidak dapat menggunakan tipe data yang berbeda untuk kolom jika tabel tidak dipartisi.

  • Untuk tabel yang dipartisi di Parket danORC, jenis kolom partisi dapat berbeda dari jenis kolom partisi lain, dan Athena akan CAST ke jenis yang diinginkan, jika memungkinkan. Untuk informasi, lihat Hindari kesalahan ketidakcocokan skema untuk tabel dengan partisi.

  • Untuk tabel yang dibuat menggunakan LazySimpleSerDesatu-satunya, dimungkinkan untuk menggunakan ALTER TABLE REPLACE COLUMNS pernyataan untuk mengganti kolom yang ada dengan tipe data yang berbeda, tetapi semua kolom yang ada yang ingin Anda simpan juga harus didefinisikan ulang dalam pernyataan, atau mereka akan dihapus. Untuk informasi selengkapnya, lihat ALTER TABLE REPLACE COLUMNS.

  • Hanya untuk tabel Apache Iceberg, Anda dapat menggunakan ALTER TABLE CHANGE COLUMN pernyataan untuk mengubah tipe data kolom. ALTER TABLE REPLACE COLUMNStidak didukung untuk tabel Iceberg. Untuk informasi selengkapnya, lihat Skema tabel Evolve Iceberg.

penting

Kami sangat menyarankan agar Anda menguji dan memverifikasi pertanyaan Anda sebelum melakukan terjemahan tipe data. Jika Athena tidak dapat menggunakan tipe data target, CREATE TABLE kueri mungkin gagal.

Gunakan tipe data yang kompatibel

Bila memungkinkan, gunakan tipe data yang kompatibel. Tabel berikut mencantumkan tipe data yang dapat diperlakukan sebagai tipe data lainnya:

Tipe data asli Tipe data target yang tersedia
STRING BYTE, TINYINT, SMALLINT, INT, BIGINT
BYTE TINYINT, SMALLINT, INT, BIGINT
TINYINT SMALLINT, INT, BIGINT
SMALLINT INT, BIGINT
INT BIGINT
FLOAT DOUBLE

Contoh berikut menggunakan CREATE TABLE pernyataan untuk tabel asli untuk membuat orders_json tabel baru yang disebutorders_json_bigint. Tabel baru menggunakan BIGINT bukan INT sebagai tipe data untuk `o_shippriority` kolom.

CREATE EXTERNAL TABLE orders_json_bigint ( `o_orderkey` int, `o_custkey` int, `o_orderstatus` string, `o_totalprice` double, `o_orderdate` string, `o_orderpriority` string, `o_clerk` string, `o_shippriority` BIGINT ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION 's3://amzn-s3-demo-bucket/orders_json';

Kueri berikut berjalan dengan sukses, mirip dengan aslinyaSELECTquery, sebelum perubahan tipe data:

Select * from orders_json LIMIT 10;