

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs 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.

# Perintah SQL
<a name="iceberg-writes-sql-syntax"></a>

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 dari AWS 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, seperti`DELETE`,,`UPDATE`, dan `MERGE``ALTER TABLE`, belum didukung pada tabel Iceberg.

Bagian berikut menunjukkan sintaks SQL untuk membuat, menyisipkan, dan mengelola tabel Iceberg di Amazon Redshift.

**Contents**
+ [CREATE TABLE](#iceberg-writes-create-table)
+ [BUAT TABEL SEBAGAI PILIH](#iceberg-writes-create-table-as-select)
+ [TAMPILKAN TABEL](#iceberg-writes-show-table)
+ [MASUKKAN KE DALAM](#iceberg-writes-insert-into)
+ [MEJA DROP](#iceberg-writes-drop-table)

## CREATE TABLE
<a name="iceberg-writes-create-table"></a>

```
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 `<external_schema>` harus ada nama skema eksternal di mana tabel eksternal akan dibuat. Untuk informasi selengkapnya tentang cara membuat dan mengelola skema eksternal, lihat [MEMBUAT SKEMA EKSTERNAL](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html) di dokumentasi Amazon Redshift.

`LOCATION`Klausa 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 berbeda Wilayah AWS, yang memungkinkan Anda untuk mereplikasi penulisan ke wilayah yang berbeda. Untuk informasi selengkapnya, lihat [Mereplikasi data di seluruh Wilayah AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/apache-iceberg-on-aws/best-practices-workloads.html#workloads-replication).

`PARTITIONED BY`mendefinisikan 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](https://iceberg.apache.org/spec/#partition-transforms) Apache Iceberg.

`PARTITIONED BY`Mendukung 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 PROPERTIES`Klausa 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`, dan`uncompressed`.

**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
<a name="iceberg-writes-create-table-as-select"></a>

```
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 TABLE`Klausa 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
<a name="iceberg-writes-show-table"></a>

```
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 TABLE`menampilkan `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 menggunakan`INSERT INTO`:

## MASUKKAN KE DALAM
<a name="iceberg-writes-insert-into"></a>

```
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 oleh`column_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 batasan:
+ 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
<a name="iceberg-writes-drop-table"></a>

```
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. Untuk AWS Glue, lihat [Menghapus file yatim piatu](https://docs.aws.amazon.com/glue/latest/dg/orphan-file-deletion.html). Untuk tabel Amazon S3, lihat Pemeliharaan [tabel](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-maintenance.html).