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
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengubah definisi tabel
ALTER TABLEpernyataan 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, dapat berupa salah satu dari berikut ini:iceberg_table
-- 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.
Pertimbangkan hal berikut saat menggunakan ALTER TABLE pernyataan:
-
ALTER TABLEpernyataan saat ini hanya mendukung tabel Iceberg v2. -
Semua
ALTER TABLEpernyataan adalah operasi metadata saja. -
ALTER TABLEpernyataan tidak mendukung tabel dengan kolom tipe kompleks.
Daftar Isi
MENGUBAH NAMA TABEL KOLOM
ALTER TABLEiceberg_tableRENAME [COLUMN]col_nameTOnew_name;
ALTER TABLE RENAME COLUMNmengganti nama kolom yang ada. Dapat berupa kolom partisi atau kolom non-partisi. Setelah mengganti nama, tipe data kolom dan spesifikasi partisi tidak berubah.col_name
catatan
ALTER TABLE RENAME COLUMNtidak didukung untuk tabel AWS Lake Formation terdaftar.
UBAH KOLOM TABEL ADD/DROP
ALTER TABLEiceberg_tableADD [COLUMN]col_namecol_type;
ALTER TABLEiceberg_tableDROP [COLUMN]col_name;
ADD COLUMNmenambahkan 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 Iceberg.
ADD COLUMNadalah operasi metadata saja. Nilai kolom yang baru ditambahkan pada baris yang ada adalahNULL.
DROP COLUMNmenjatuhkan 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.
MENGUBAH TABEL MENGUBAH KOLOM
ALTER TABLEiceberg_tableALTER COLUMNcolumn_nameTYPEupdated_data_type;
ALTER TABLE ALTER COLUMNmengubah tipe data dari kolom yang ada. Hanya pelebaran tipe yang diperbolehkan, bukan penyempitan. Karena data tidak ditulis ulang setelahALTER, 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 TABLEiceberg_table(cint int) USING ICEBERG LOCATION 's3://your-bucket-name/prefix/';
Hal ini dapat diperlebar dengan pernyataan iniALTER:
ALTER TABLEiceberg_tableALTER 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 Iceberg
Memperluas jenis kolom yang termasuk dalam spesifikasi partisi yang ada tidak didukung.
MENGUBAH PROPERTI TABEL SET TABEL
ALTER TABLEiceberg_tableSET 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 adalahcompression_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, danzstd.
ALTER TABLE ADD, DROP, dan REPLACE PARTITION FIELD
ALTER TABLEiceberg_tableADD PARTITION FIELDcolumn_name|transform_function;
ALTER TABLEiceberg_tableDROP PARTITION FIELDcolumn_name|transform_function;
ALTER TABLEiceberg_tableREPLACE PARTITION FIELDcolumn_name|transform_functionWITHcolumn_name|transform_function;
[ADD | DROP | REPLACE] PARTITION FIELDPernyataan tersebut memungkinkan Anda mengubah spesifikasi partisi tabel yang ada, mendukung evolusi partisi melalui Amazon Redshift.
ALTERPernyataan untuk spesifikasi partisi hanya mengubah metadata tabel dan tidak mempartisi ulang data tabel yang ada. SetelahALTER, data baru dimasukkan ke dalam tabel mengikuti spesifikasi partisi yang baru ditentukan.
Pertimbangkan batasan berikut untuk pernyataan ini:
-
Saat mendefinisikan bidang partisi baru melalui
ADDatauREPLACE ... 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 diCREATE TABLE. Untuk informasi selengkapnya, lihat CREATE TABLE.Misalnya, ketika Anda memiliki tabel:
CREATE TABLEiceberg_table... PARTITIONED BY year(ship_date) USING ICEBERG ...;Berikut ini gagal karena
ship_datesudah menjadi bagian dari bidang partisi yang ada:ALTER TABLEiceberg_tableADD 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 TABLEiceberg_table... PARTITIONED BY year(ship_date) USING ICEBERG ...; ALTER TABLEiceberg_tableADD PARTITION FIELD bucket(256, item_id);Spesifikasi partisi tabel sama dengan:
CREATE TABLEiceberg_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 TABLEiceberg_table... PARTITIONED BY (year(ship_date), bucket(256, item_id)) USING ICEBERG ...; ALTER TABLEiceberg_tableDROP 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 TABLEiceberg_table... PARTITIONED BY (year(ship_date), bucket(256, item_id)) USING ICEBERG ...; ALTER TABLEiceberg_tableREPLACE PARTITION FIELD year(ship_date) WITH month(ship_date);Setelah ini
ALTER, partisi tabel menjadi(month(ship_date), bucket(256, item_id)). -
voidTransformasi tidak didukung dalamALTERpernyataan partisi.