Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai 1 November 2025. Jika Anda ingin menggunakan Python UDFs, buat UDFs sebelum tanggal tersebut. Python yang ada UDFs akan terus berfungsi seperti biasa. 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.
Perintah SQL
Tabel Apache Iceberg di Amazon Redshift menyediakan cara ampuh untuk mengelola kumpulan data analitik besar di danau data Anda. Tabel ini mendukung transaksi ACID, evolusi skema, dan kemampuan perjalanan waktu sambil mempertahankan kinerja tinggi untuk beban kerja analitik. Menggunakan tabel Apache Iceberg, Anda dapat secara efisien mengatur dan mempartisi data Anda, mengontrol format file dan kompresi, dan terintegrasi dengan mulus dengan layanan lain. AWS
Anda dapat membuat tabel Iceberg yang dipartisi dan tidak dipartisi menggunakan dan perintah. CREATE TABLE
... USING ICEBERG CREATE TABLE ... USING ICEBERG AS SELECT Anda dapat mereferensikan tabel Iceberg menggunakan notasi skema eksternal (external_schema.table_name) atau notasi tiga bagian (). "catalog_name".database_name.table_name Contoh di bagian ini menunjukkan kedua metode.
Setelah Anda membuat tabel, Anda dapat menambahkan data menggunakan INSERT perintah standar. Ingatlah bahwa meskipun Amazon Redshift bekerja dengan banyak tipe data Iceberg, Anda mungkin perlu mengonversi beberapa format data saat memasukkan informasi.
Anda dapat melihat tabel Iceberg menggunakan SHOW TABLES perintah. Jika Anda ingin menghapus tabel dariAWS Glue Data Catalog, Anda dapat menggunakan DROP TABLE perintah. Perhatikan bahwa ini hanya menghapus pendaftaran tabel. Data aktual akan tetap disimpan sampai Anda menghapusnya secara terpisah.
Semua pernyataan SQL lainnya, sepertiDELETE,,UPDATE, dan MERGEALTER TABLE, belum didukung pada tabel Iceberg.
Bagian berikut menunjukkan sintaks SQL untuk membuat, menyisipkan, dan mengelola tabel Iceberg di Amazon Redshift.
CREATE TABLE
CREATE TABLE [IF NOT EXISTS]<external_schema>.<table_name>( column_name data_type [, ...] ) USING ICEBERG [LOCATION 's3://your-bucket-name/prefix/'] [PARTITIONED BY [[column_name | transform_function]], ...] [TABLE PROPERTIES ('compression_type'='<compression_value>')]
Anda juga dapat menggunakan notasi tiga bagian untuk bucket tabel S3:
CREATE TABLE "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name>( column_name data_type [, ...] ) USING ICEBERG [PARTITIONED BY [[column_name | transform_function]], ...] [TABLE PROPERTIES ('compression_type'='<compression_value>')]
Perhatikan bahwa harus menjadi nama skema eksternal yang ada di mana tabel eksternal akan dibuat. Untuk informasi selengkapnya tentang cara membuat dan mengelola skema eksternal, lihat MEMBUAT SKEMA EKSTERNAL di dokumentasi Amazon Redshift.<external_schema>
LOCATIONKlausa mendefinisikan lokasi tabel untuk tabel Iceberg yang baru dibuat ini. Untuk tabel Amazon S3, LOCATION tidak dapat ditentukan karena lokasi tabel ditentukan oleh katalog tabel Amazon S3 (). s3tablescatalog
Dalam semua kasus lain, LOCATION diperlukan, dan itu harus menjadi lokasi kosong, artinya tidak ada objek Amazon S3 yang berbagi ember dan awalan yang sama ini. Perhatikan bahwa wilayah bucket Amazon S3 harus berada di wilayah yang sama dengan cluster Amazon Redshift.
Namun, AWS menyediakan metode untuk mereplikasi data dari tabel Iceberg yang disimpan AWS Glue Data Catalog dalam satu Wilayah AWS ke yang berbedaWilayah AWS, yang memungkinkan Anda untuk mereplikasi penulisan ke wilayah yang berbeda. Untuk informasi selengkapnya, lihat Mereplikasi data di seluruh Wilayah AWS.
PARTITIONED BYmendefinisikan partisi tabel Iceberg. Amazon Redshift mendukung semua transformasi partisi Iceberg v2 kecuali untuk. void Berikut adalah daftar transformasi yang didukung:
-
identitas
-
ember [N]
-
memotong [W]
-
tahun
-
bulan
-
hari
-
jam
Untuk definisi lengkap dari transformasi ini dan tipe data yang kompatibel, lihat Transformasi Partisi dalam dokumentasi
PARTITIONED BYMendukung partisi multi-level. Misalnya, Anda dapat menjalankan perintah berikut:
CREATE TABLE ... USING ICEBERG LOCATION ... PARTITIONED BY (bucket(16, id), year(ship_date));
Namun, Amazon Redshift tidak mendukung penggunaan satu kolom di lebih dari satu transformasi. Misalnya, sintaks berikut tidak didukung:
CREATE TABLE ... USING ICEBERG LOCATION ... PARTITIONED BY (bucket(16, ship_date), year(ship_date));
TABLE PROPERTIESKlausa mendefinisikan properti tabel tambahan untuk tabel Iceberg ini. Satu-satunya properti tabel yang kami dukung adalah compression_type yang mendefinisikan kompresi file data Parket default. Jika ini tidak ditentukan, snappy digunakan sebagai codec kompresi. Nilai yang mungkin untuk compression_type adalah:zstd,brotli,gzip,snappy, danuncompressed.
catatan
CREATE TABLE ... LIKE ...tidak didukung untuk tabel Iceberg. Tabel gunung es juga tidak mendukung batasan kolom dan atribut kolom seperti tabel RMS.
Atau, Anda dapat membuat dan mengisi tabel Iceberg dalam satu operasi menggunakan: CREATE TABLE AS SELECT
BUAT TABEL SEBAGAI PILIH
CREATE TABLE<external_schema>.<table_name>[( column_name[, ...] )] USING ICEBERG [LOCATION 's3://your-bucket-name/prefix/'] [PARTITIONED BY [[column_name | transform_function]], ...] [TABLE PROPERTIES ('compression_type'='<compression-value>')] AS SELECT query
Anda juga dapat menggunakan notasi tiga bagian untuk membuat tabel dalam katalog yang dipasang secara otomatis:
CREATE TABLE "<catalog_name>".<database_name>.<table_name>[( column_name[, ...] )] USING ICEBERG [LOCATION 's3://your-bucket-name/prefix/'] [PARTITIONED BY [[column_name | transform_function]], ...] [TABLE PROPERTIES ('compression_type'='<compression-value>')] AS SELECT query
Ini mirip dengan CREATE TABLE pernyataan kecuali yang diikuti CREATE oleh SELECT pernyataan untuk mengisi tabel dengan hasil SELECT kueri.
CREATE TABLEKlausa di sini tidak lagi memungkinkan Anda untuk menentukan tipe data karena tipe data kolom akan ditentukan oleh SELECT kueri.
Jika SELECT kueri gagal karena alasan apa pun, kueri ini akan gagal dan tabel Iceberg tidak akan dibuat.
Anda dapat melihat struktur tabel Iceberg Anda menggunakan: SHOW
TABLE
TAMPILKAN TABEL
SHOW TABLE<external_schema>.<table_name>
Anda juga dapat menggunakan notasi tiga bagian dengan katalog yang dipasang secara otomatis:
SHOW TABLE "<catalog_name>".<database_name>.<table_name>
SHOW TABLEmenampilkan CREATE TABLE pernyataan untuk tabel Iceberg. Perintah akan menunjukkan hasil yang sesuai berdasarkan jenis tabel. Berikut ini adalah contoh SHOW TABLE output untuk tabel Iceberg:
CREATE TABLE my_schema.items (id int, price decimal(5, 2)) USING ICEBERG LOCATION 's3://my_s3_bucket/items/' PARTITIONED BY (bucket(16, id)) TABLE PROPERTIES ('compression_type'='snappy')
catatan
Untuk tabel Amazon S3, karena lokasi tabel dikelola oleh katalog tabel Amazon S3, klausa akan dihilangkan LOCATION dalam hasil. SHOW TABLE
Setelah membuat tabel, Anda dapat menambahkan data menggunakanINSERT INTO:
MASUKKAN KE DALAM
INSERT INTO<external_schema>.<table_name>[(column_name [, ...])] VALUES (...) INSERT INTO<external_schema>.<table_name>[(column_name [, ...])] (SELECT query) -- Using three-part notation for S3 table buckets: INSERT INTO "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name>[(column_name [, ...])] VALUES (...) INSERT INTO "<table_bucket_name>@s3tablescatalog".<database_name>.<table_name>[(column_name [, ...])] (SELECT query)
Anda dapat INSERT INTO ada tabel Iceberg menggunakan sintaks di atas. Jika VALUES klausa digunakan, Anda memberikan nilai untuk kolom yang terdaftar olehcolumn_name, atau semua kolom jika column_name bagian dihilangkan.
Ketika data dimasukkan ke dalam tabel dipartisi, baris baru didistribusikan sesuai dengan spesifikasi partisi yang telah ditentukan. Jika karena alasan apapun SELECT query gagal, query akan gagal dan tidak ada data akan dimasukkan ke dalam tabel Iceberg.
Anda dapat melihat tabel Iceberg INSERT INTO yang tidak dibuat oleh Amazon Redshift. Namun, ada beberapa keterbatasan:
-
Tabel harus berupa tabel Iceberg v2.
-
Tabel harus menggunakan Parket sebagai format data default.
-
Tabel tidak boleh memiliki kompresi metadata yang disetel ke True.
-
Tabel tidak boleh mengaktifkan Write-Audit-Publish (WAP).
Untuk menghapus tabel Iceberg dari katalog, gunakan perintah: DROP TABLE
MEJA DROP
DROP TABLE<external_schema>.<table_name>
Anda juga dapat menggunakan notasi tiga bagian dengan katalog yang dipasang secara otomatis:
DROP TABLE "<catalog_name>.<database_name>.<table_name>
Menjatuhkan tabel Iceberg adalah operasi metadata saja. Ini menghapus entri tabel dari AWS Glue Data Catalog dan katalog tabel Amazon S3, jika ini adalah tabel Amazon S3. Amazon Redshift tidak membersihkan atau menghapus file data atau file metadata yang ada di bawah lokasi tabel. Anda dapat menggunakan fitur dalam AWS Glue dan tabel Amazon S3 untuk menghapus file yatim piatu. UntukAWS Glue, lihat Menghapus file yatim piatu. Untuk tabel Amazon S3, lihat Pemeliharaan tabel.