

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

# Mengubah tipe data kolom
<a name="updates-changing-column-type"></a>

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-pertimbangan
<a name="updates-changing-column-type-considerations"></a>

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 dan ORC, Anda tidak dapat menggunakan tipe data yang berbeda untuk kolom jika tabel tidak dipartisi. 
+ Untuk tabel yang dipartisi di Parquet dan ORC, tipe kolom partisi dapat berbeda dari tipe kolom partisi lain, dan Athena akan`CAST`ke jenis yang diinginkan, jika memungkinkan. Untuk informasi, lihat [Hindari kesalahan ketidakcocokan skema untuk tabel dengan partisi](updates-and-partitions.md#partitions-dealing-with-schema-mismatch-errors).
+ Untuk tabel yang dibuat menggunakan [LazySimpleSerDe](lazy-simple-serde.md)satu-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](alter-table-replace-columns.md).
+ Hanya untuk tabel Apache Iceberg, Anda dapat menggunakan [MENGUBAH KOLOM PERUBAHAN TABEL](querying-iceberg-alter-table-change-column.md) pernyataan untuk mengubah tipe data kolom. `ALTER TABLE REPLACE COLUMNS`tidak didukung untuk tabel Iceberg. Untuk informasi selengkapnya, lihat [Skema tabel Evolve Iceberg](querying-iceberg-evolving-table-schema.md).

**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
<a name="updates-changing-column-type-use-compatible-data-types"></a>

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 disebut`orders_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 aslinya`SELECT`query, sebelum perubahan tipe data:

```
Select * from orders_json 
LIMIT 10;
```