View a markdown version of this page

Catatan penggunaan - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.

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

Catatan penggunaan

Topik ini berisi catatan penggunaan untukCREATE EXTERNAL TABLE. Anda tidak dapat melihat detail untuk tabel Amazon Redshift Spectrum menggunakan sumber daya yang sama yang Anda gunakan untuk tabel Amazon Redshift standar, seperti,, PG_CLASS PG_TABLE_DEFSTV_TBL_PERM, atau information_schema. Jika intelijen bisnis atau alat analitik Anda tidak mengenali tabel eksternal Redshift Spectrum, konfigurasikan aplikasi Anda untuk menanyakan SVV_EXTERNAL_TABLES danSVV_EXTERNAL_COLUMNS.

BUAT TABEL EKSTERNAL SEBAGAI

Dalam beberapa kasus, Anda mungkin menjalankan perintah CREATE EXTERNAL TABLE AS pada Katalog AWS Glue Data, katalog AWS Lake Formation eksternal, atau metastore Apache Hive. Dalam kasus seperti itu, Anda menggunakan peran AWS Identity and Access Management (IAM) untuk membuat skema eksternal. Peran IAM ini harus memiliki izin baca dan tulis di Amazon S3.

Jika Anda menggunakan katalog Lake Formation, peran IAM harus memiliki izin untuk membuat tabel dalam katalog. Dalam hal ini, ia juga harus memiliki izin lokasi danau data pada jalur Amazon S3 target. Peran IAM ini menjadi pemilik AWS Lake Formation tabel baru.

Untuk memastikan bahwa nama file unik, Amazon Redshift menggunakan format berikut untuk nama setiap file yang diunggah ke Amazon S3 secara default.

<date>_<time>_<microseconds>_<query_id>_<slice-number>_part_<part-number>.<format>.

Contohnya adalah 20200303_004509_810669_1007_0001_part_00.parquet.

Pertimbangkan hal berikut saat menjalankan perintah CREATE EXTERNAL TABLE AS:

  • Lokasi Amazon S3 harus kosong.

  • Amazon Redshift hanya mendukung format PARQUET dan TEXTFILE saat menggunakan klausa STORED AS.

  • Anda tidak perlu menentukan daftar definisi kolom. Nama kolom dan tipe data kolom dari tabel eksternal baru diturunkan langsung dari kueri SELECT.

  • Anda tidak perlu menentukan tipe data kolom partisi dalam klausa PARTITIONED BY. Jika Anda menentukan kunci partisi, nama kolom ini harus ada dalam hasil kueri SELECT. Saat memiliki beberapa kolom partisi, urutannya dalam kueri SELECT tidak masalah. Amazon Redshift menggunakan urutan yang ditentukan dalam klausa PARTITIONED BY untuk membuat tabel eksternal.

  • Amazon Redshift secara otomatis mempartisi file output ke folder partisi berdasarkan nilai kunci partisi. Secara default, Amazon Redshift menghapus kolom partisi dari file output.

  • Klausa GARIS TERMINATED BY 'delimiter' tidak didukung.

  • Klausa 'serde_name' ROW FORMAT SERDE tidak didukung.

  • Penggunaan file manifes tidak didukung. Dengan demikian, Anda tidak dapat menentukan klausa LOCATION ke file manifes di Amazon S3.

  • Amazon Redshift secara otomatis memperbarui properti tabel 'numRows' di akhir perintah.

  • Properti tabel 'compression_type' hanya menerima 'none' atau 'snappy' untuk format file PARQUET.

  • Amazon Redshift tidak mengizinkan klausa LIMIT di kueri SELECT luar. Sebagai gantinya, Anda dapat menggunakan klausa LIMIT bersarang.

  • Anda dapat menggunakan STL_UNLOAD_LOG untuk melacak file yang ditulis ke Amazon S3 oleh setiap operasi CREATE EXTERNAL TABLE AS.

Izin untuk membuat dan menanyakan tabel eksternal

Untuk membuat tabel eksternal, pastikan bahwa Anda adalah pemilik skema eksternal atau superuser. Untuk mentransfer kepemilikan skema eksternal, gunakanALTER SCHEMA. Contoh berikut mengubah pemilik spectrum_schema skema menjadinewowner.

alter schema spectrum_schema owner to newowner;

Untuk menjalankan kueri Redshift Spectrum, Anda memerlukan izin berikut:

  • Izin penggunaan pada skema

  • Izin untuk membuat tabel sementara di database saat ini

Contoh berikut memberikan izin penggunaan pada skema spectrum_schema ke grup spectrumusers pengguna.

grant usage on schema spectrum_schema to group spectrumusers;

Contoh berikut memberikan izin sementara pada database spectrumdb ke grup spectrumusers pengguna.

grant temp on database spectrumdb to group spectrumusers;

Pseudokolom

Secara default, Amazon Redshift membuat tabel eksternal dengan pseudocolumn $path dan $size. Pilih kolom ini untuk melihat jalur ke file data di Amazon S3 dan ukuran file data untuk setiap baris yang dikembalikan oleh kueri. Nama kolom $path dan $size harus dibatasi dengan tanda kutip ganda. Kla usa SEL ECT * tidak mengembalikan pseudocolumn. Anda harus secara eksplisit menyertakan nama kolom $path dan $size dalam kueri Anda, seperti yang ditunjukkan contoh berikut.

select "$path", "$size" from spectrum.sales_part where saledate = '2008-12-01';

Anda dapat menonaktifkan pembuatan pseudocolumn untuk sesi dengan menyetel parameter konfigurasi spectrum_enable_pseudo_column ke false.

penting

Memilih $size atau $path dikenakan biaya karena Redshift Spectrum memindai file data di Amazon S3 untuk menentukan ukuran set hasil. Untuk informasi selengkapnya, lihat Harga Amazon Redshift.

Mengatur opsi penanganan data

Anda dapat mengatur parameter tabel untuk menentukan penanganan input untuk data yang ditanyakan di tabel eksternal, termasuk:

  • Karakter surplus dalam kolom yang berisi VARCHAR, CHAR, dan data string. Untuk informasi selengkapnya, lihat properti tabel eksternalsurplus_char_handling.

  • Karakter tidak valid dalam kolom yang berisi VARCHAR, CHAR, dan data string. Untuk informasi selengkapnya, lihat properti tabel eksternalinvalid_char_handling.

  • Karakter pengganti yang akan digunakan saat Anda menentukan REPLACE untuk properti tabel eksternalinvalid_char_handling.

  • Penanganan Cast Overflow dalam kolom yang berisi data integer dan desimal. Untuk informasi selengkapnya, lihat properti tabel eksternalnumeric_overflow_handling.

  • Surplus_bytes_handling untuk menentukan penanganan input untuk surplus byte dalam kolom yang berisi data varbyte. Untuk informasi selengkapnya, lihat properti tabel eksternalsurplus_bytes_handling.