

 Amazon Redshift tidak akan lagi mendukung pembuatan UDF Python baru mulai Patch 198. UDF Python yang ada akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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

# Mengubah definisi tabel
<a name="iceberg-alter-table"></a>

`ALTER TABLE`pernyataan digunakan untuk mengubah definisi tabel, termasuk skema, spesifikasi partisi, dan properti. Anda dapat menggunakan pernyataan DDL ini untuk mengelola tabel Iceberg Anda secara langsung melalui Amazon Redshift.

Semua `ALTER TABLE` pernyataan mendukung penggunaan referensi skema eksternal atau referensi notasi tiga bagian untuk tabel Iceberg. Dalam contoh sintaks di bawah ini, `{{iceberg_table}}` dapat berupa salah satu dari berikut ini:

```
-- External schema notation:
{{<external_schema>}}.{{<table_name>}}

-- Three-part notation for S3 table buckets:
"{{<table_bucket_name>}}@s3tablescatalog".{{<database_name>}}.{{<table_name>}}

-- Three-part notation for the awsdatacatalog root catalog:
awsdatacatalog.{{<database_name>}}.{{<table_name>}}
```

Untuk informasi selengkapnya, lihat [Merujuk tabel Iceberg di Amazon Redshift](referencing-iceberg-tables.md).

Pertimbangkan hal berikut saat menggunakan `ALTER TABLE` pernyataan:
+ `ALTER TABLE`pernyataan saat ini hanya mendukung tabel Iceberg v2.
+ Semua `ALTER TABLE` pernyataan adalah operasi metadata saja.
+ `ALTER TABLE`pernyataan tidak mendukung tabel dengan kolom tipe kompleks.

**Contents**
+ [MENGUBAH NAMA TABEL KOLOM](#iceberg-alter-table-rename-column)
+ [UBAH KOLOM TABEL ADD/DROP](#iceberg-alter-table-add-drop-column)
+ [MENGUBAH TABEL MENGUBAH KOLOM](#iceberg-alter-table-alter-column)
+ [MENGUBAH PROPERTI TABEL SET TABEL](#iceberg-alter-table-set-properties)
+ [ALTER TABLE ADD, DROP, dan REPLACE PARTITION FIELD](#iceberg-alter-table-partition-field)

## MENGUBAH NAMA TABEL KOLOM
<a name="iceberg-alter-table-rename-column"></a>

```
ALTER TABLE {{iceberg_table}}
RENAME [COLUMN] {{col_name}} TO {{new_name}};
```

`ALTER TABLE RENAME COLUMN`mengganti nama kolom yang ada. `{{col_name}}`Dapat berupa kolom partisi atau kolom non-partisi. Setelah mengganti nama, tipe data kolom dan spesifikasi partisi tidak berubah.

**catatan**  
`ALTER TABLE RENAME COLUMN`tidak didukung untuk tabel AWS Lake Formation terdaftar.

## UBAH KOLOM TABEL ADD/DROP
<a name="iceberg-alter-table-add-drop-column"></a>

```
ALTER TABLE {{iceberg_table}}
ADD [COLUMN] {{col_name}} {{col_type}};
```

```
ALTER TABLE {{iceberg_table}}
DROP [COLUMN] {{col_name}};
```

`ADD COLUMN`menambahkan satu kolom ke tabel Iceberg yang ada. Anda dapat menggunakan tipe data apa pun yang didukung oleh Amazon Redshift Iceberg menulis. Untuk informasi selengkapnya, lihat [Tipe data yang didukung dengan tabel Apache IcebergJenis data yang didukung](querying-iceberg-supported-data-types.md).

`ADD COLUMN`adalah operasi metadata saja. Nilai kolom yang baru ditambahkan pada baris yang ada adalah`NULL`.

`DROP COLUMN`menjatuhkan kolom dari tabel Iceberg yang ada. Untuk tabel yang dipartisi, Anda tidak dapat menjatuhkan kolom yang termasuk dalam spesifikasi partisi saat ini. Anda harus menghapus bidang partisi yang melibatkan kolom terlebih dahulu sebelum menjatuhkan kolom. Untuk informasi selengkapnya, lihat [ALTER TABLE ADD, DROP, dan REPLACE PARTITION FIELD](#iceberg-alter-table-partition-field).

## MENGUBAH TABEL MENGUBAH KOLOM
<a name="iceberg-alter-table-alter-column"></a>

```
ALTER TABLE {{iceberg_table}}
    ALTER COLUMN {{column_name}} TYPE {{updated_data_type}};
```

`ALTER TABLE ALTER COLUMN`mengubah tipe data dari kolom yang ada. Hanya pelebaran tipe yang diperbolehkan, bukan penyempitan. Karena data tidak ditulis ulang setelah`ALTER`, penyempitan tipe data dapat menyebabkan overflow saat mengkonsumsi data tabel yang ada. Pelebaran jenis berikut diperbolehkan sesuai spesifikasi Gunung Es:

```
int → bigint
float → double
decimal(P, S) → decimal(P2, S) where P2 > P (scale cannot be changed)
```

Di Amazon Redshift, tipe data dapat memiliki alias. Misalnya, bilangan bulat 4-byte menggunakan nama `int` tipe atau. `int4` Selama mereka dipetakan ke 4-byte int dalam tipe Iceberg, pelebaran tipe ke bilangan bulat 8-byte diperbolehkan.

Misalnya, tabel Iceberg dibuat menggunakan tipe integer 4-byte:

```
CREATE TABLE {{iceberg_table}} (cint int) USING ICEBERG LOCATION 's3://{{your-bucket-name}}/prefix/';
```

Hal ini dapat diperlebar dengan pernyataan ini`ALTER`:

```
ALTER TABLE {{iceberg_table}} ALTER COLUMN cint TYPE int8;
```

Untuk daftar lengkap pemetaan tipe data antara jenis Amazon Redshift dan tipe Iceberg, lihat. [Tipe data yang didukung dengan tabel Apache IcebergJenis data yang didukung](querying-iceberg-supported-data-types.md)

Memperluas jenis kolom yang termasuk dalam spesifikasi partisi yang ada tidak didukung.

## MENGUBAH PROPERTI TABEL SET TABEL
<a name="iceberg-alter-table-set-properties"></a>

```
ALTER TABLE {{iceberg_table}}
SET TABLE PROPERTIES (
 'compression_type' = '{{compression_value}}');
```

Pernyataan ini memungkinkan Anda untuk menimpa properti tabel default. Saat ini satu-satunya properti tabel yang diizinkan untuk pernyataan ini adalah`compression_type`. Anda dapat menimpa untuk menggunakan jenis kompresi yang berbeda untuk file Parket tabel Iceberg. Data dimasukkan setelah `ALTER` menggunakan jenis kompresi baru.

Nilai yang mungkin untuk `compression_type` adalah:`brotli`,`gzip`,`snappy`,`uncompressed`, dan`zstd`.

## ALTER TABLE ADD, DROP, dan REPLACE PARTITION FIELD
<a name="iceberg-alter-table-partition-field"></a>

```
ALTER TABLE {{iceberg_table}}
    ADD PARTITION FIELD {{column_name}} | {{transform_function}};
```

```
ALTER TABLE {{iceberg_table}}
    DROP PARTITION FIELD {{column_name}} | {{transform_function}};
```

```
ALTER TABLE {{iceberg_table}}
    REPLACE PARTITION FIELD {{column_name}} | {{transform_function}}
        WITH {{column_name}} | {{transform_function}};
```

`[ADD | DROP | REPLACE] PARTITION FIELD`Pernyataan tersebut memungkinkan Anda mengubah spesifikasi partisi tabel yang ada, mendukung evolusi partisi melalui Amazon Redshift.

`ALTER`Pernyataan untuk spesifikasi partisi hanya mengubah metadata tabel dan tidak mempartisi ulang data tabel yang ada. Setelah`ALTER`, data baru dimasukkan ke dalam tabel mengikuti spesifikasi partisi yang baru ditentukan.

Pertimbangkan batasan berikut untuk pernyataan ini:
+ Saat mendefinisikan bidang partisi baru melalui `ADD` atau`REPLACE ... WITH ...`, bidang baru tidak dapat menyertakan kolom yang sudah menjadi bagian dari bidang partisi lainnya. Ini adalah batasan yang sama seperti ketika Anda menentukan spesifikasi partisi awal di`CREATE TABLE`. Untuk informasi selengkapnya, lihat [CREATE TABLE](iceberg-writes-sql-syntax.md#iceberg-writes-create-table).

  Misalnya, ketika Anda memiliki tabel:

  ```
  CREATE TABLE {{iceberg_table}} ... PARTITIONED BY year(ship_date) USING ICEBERG ...;
  ```

  Berikut ini gagal karena `ship_date` sudah menjadi bagian dari bidang partisi yang ada:

  ```
  ALTER TABLE {{iceberg_table}} ADD PARTITION FIELD bucket(128, ship_date);
  ```
+ Saat menambahkan bidang partisi baru, bidang yang baru ditambahkan selalu diperlakukan sebagai tingkat partisi terakhir dari tabel. Contoh:

  ```
  CREATE TABLE {{iceberg_table}} ... PARTITIONED BY year(ship_date) USING ICEBERG ...;
  ALTER TABLE {{iceberg_table}} ADD PARTITION FIELD bucket(256, item_id);
  ```

  Spesifikasi partisi tabel sama dengan:

  ```
  CREATE TABLE {{iceberg_table}} ... PARTITIONED BY (year(ship_date), bucket(256, item_id))
      USING ICEBERG ...;
  ```
+ Saat menjatuhkan bidang partisi, itu tidak terbatas pada tingkat partisi terakhir. Anda dapat menjatuhkan bidang partisi yang ada. Contoh:

  ```
  CREATE TABLE {{iceberg_table}} ... PARTITIONED BY (year(ship_date), bucket(256, item_id))
      USING ICEBERG ...;
  ALTER TABLE {{iceberg_table}} DROP PARTITION FIELD year(ship_date);
  ```

  Setelah ini`ALTER`, tabel hanya dipartisi oleh. `bucket(256, item_id)`
+ Saat memanggil`REPLACE PARTITION FIELD ... WITH ...`, bidang partisi yang akan diganti dapat berupa bidang apa pun dalam spesifikasi dan tidak terbatas pada bidang terakhir. Contoh:

  ```
  CREATE TABLE {{iceberg_table}} ... PARTITIONED BY (year(ship_date), bucket(256, item_id))
      USING ICEBERG ...;
  ALTER TABLE {{iceberg_table}} REPLACE PARTITION FIELD year(ship_date) WITH month(ship_date);
  ```

  Setelah ini`ALTER`, partisi tabel menjadi`(month(ship_date), bucket(256, item_id))`.
+ `void`Transformasi tidak didukung dalam `ALTER` pernyataan partisi.