Catatan penggunaan - Amazon Redshift

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 dengan yang Anda gunakan untuk tabel Amazon Redshift standar, PG_ _ TABLE DEF STV_TBL_PERM seperti, PG_, atau CLASS information_schema. Jika alat intelijen bisnis atau analitik Anda tidak mengenali tabel eksternal Redshift Spectrum, konfigurasikan aplikasi Anda ke kueri SVV_EXTERNAL_TABLES dan. SVV_EXTERNAL_COLUMNS

CREATEEXTERNALTABLESEBAGAI

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. IAMPeran ini harus memiliki izin baca dan tulis di Amazon S3.

Jika Anda menggunakan katalog Lake Formation, IAM peran harus memiliki izin untuk membuat tabel di katalog. Dalam hal ini, ia juga harus memiliki izin lokasi danau data pada jalur Amazon S3 target. IAMPeran 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 PARQUET dan TEXTFILE memformat saat menggunakan klausa STORED AS.

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

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

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

  • Klausa LINES TERMINATED BY 'delimiter' tidak didukung.

  • Klausa ROW FORMAT SERDE 'serde_name' tidak didukung.

  • Penggunaan file manifes tidak didukung. Dengan demikian, Anda tidak dapat menentukan LOCATION klausa 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 LIMIT klausa di kueri luar. SELECT Sebagai gantinya, Anda dapat menggunakan LIMIT klausa 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 dalam 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 pseudocolumns $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. Klausa SELECT* tidak mengembalikan pseudocolumns. 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 pseudocolumns untuk sesi dengan menyetel parameter konfigurasi spectrum_enable_pseudo_columns ke false.

penting

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

Mengatur opsi penanganan data

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

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

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

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

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

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