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
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
CREATE VIEW
Membuat tampilan dalam database. Tampilan tidak terwujud secara fisik; kueri yang mendefinisikan tampilan dijalankan setiap kali tampilan direferensikan dalam kueri. Untuk membuat tampilan dengan tabel eksternal, sertakan klausa WITH NO SCHEMA BINDING.
Untuk membuat tampilan standar, Anda memerlukan akses ke tabel yang mendasarinya, atau ke tampilan yang mendasarinya. Untuk menanyakan tampilan standar, Anda perlu memilih izin untuk tampilan itu sendiri, tetapi Anda tidak perlu memilih izin untuk tabel yang mendasarinya. Dalam kasus di mana Anda membuat tampilan yang mereferensikan tabel atau tampilan dalam skema lain, atau jika Anda membuat tampilan yang mereferensikan tampilan yang terwujud, Anda memerlukan izin penggunaan. Untuk menanyakan tampilan pengikatan terlambat, Anda perlu memilih izin untuk tampilan pengikatan terlambat itu sendiri. Anda juga harus memastikan pemilik tampilan pengikatan terlambat memiliki izin pilih untuk objek yang direferensikan (tabel, tampilan, atau fungsi yang ditentukan pengguna). Untuk informasi selengkapnya tentang tampilan pengikatan terlambat, lihat. Catatan penggunaan
Izin yang diperlukan
Untuk menggunakan CREATE VIEW, salah satu izin berikut diperlukan.
-
Untuk membuat tampilan menggunakan CREATE [OR REPLACE] VIEW:
-
Superuser
-
Pengguna dengan izin CREATE [REPLACE] VIEW
-
-
Untuk mengganti tampilan yang ada menggunakan CREATE OR REPLACE VIEW:
-
Superuser
-
Pengguna dengan izin CREATE [OR REPLACE] VIEW
-
Lihat pemilik
-
Jika pengguna ingin mengakses tampilan yang menggabungkan fungsi yang ditentukan pengguna, pengguna harus memiliki izin EXECUTE pada fungsi itu.
Sintaksis
CREATE [ OR REPLACE ] VIEW name [ ( column_name [, ...] ) ] AS query [ WITH NO SCHEMA BINDING ]
Parameter
- ATAU GANTI
-
Jika tampilan dengan nama yang sama sudah ada, tampilan diganti. Anda hanya dapat mengganti tampilan dengan kueri baru yang menghasilkan kumpulan kolom yang identik, menggunakan nama kolom dan tipe data yang sama. CREATE OR REPLACE VIEW mengunci tampilan untuk membaca dan menulis hingga operasi selesai.
Saat tampilan diganti, properti lainnya seperti kepemilikan dan hak istimewa yang diberikan dipertahankan.
- name
-
Nama tampilan. Jika nama skema diberikan (seperti
myschema.myview) tampilan dibuat menggunakan skema yang ditentukan. Jika tidak, tampilan dibuat dalam skema saat ini. Nama tampilan harus berbeda dari nama tampilan atau tabel lain dalam skema yang sama.Jika Anda menentukan nama tampilan yang dimulai dengan '# ', tampilan dibuat sebagai tampilan sementara yang hanya terlihat di sesi saat ini.
Untuk informasi selengkapnya tentang nama yang valid, lihatNama dan pengenal. Anda tidak dapat membuat tabel atau tampilan di database sistem template0, template1, padb_harvest, atau sys:internal.
- nama_kolom
-
Daftar nama opsional yang akan digunakan untuk kolom dalam tampilan. Jika tidak ada nama kolom yang diberikan, nama kolom diturunkan dari kueri. Jumlah maksimum kolom yang dapat Anda tentukan dalam satu tampilan adalah 1.600.
- query
-
Kueri (dalam bentuk pernyataan SELECT) yang mengevaluasi ke tabel. Tabel ini mendefinisikan kolom dan baris dalam tampilan.
- TANPA PENGIKATAN SKEMA
-
Klausa yang menentukan bahwa tampilan tidak terikat ke objek database yang mendasarinya, seperti tabel dan fungsi yang ditentukan pengguna. Akibatnya, tidak ada ketergantungan antara tampilan dan objek yang dirujukkannya. Anda dapat membuat tampilan meskipun objek yang direferensikan tidak ada. Karena tidak ada ketergantungan, Anda dapat melepaskan atau mengubah objek yang direferensikan tanpa mempengaruhi tampilan. Amazon Redshift tidak memeriksa dependensi sampai tampilan ditanyakan. Ekspresi tabel umum rekursif (RCTe) tidak didukung dengan tampilan pengikatan terlambat. Untuk melihat detail tentang tampilan pengikatan terlambat, jalankan fungsinya. PG_GET_LATE_BINDING_VIEW_COLS
Bila Anda menyertakan klausa WITH NO SCHEMA BINDING, tabel dan tampilan yang dirujuk dalam pernyataan SELECT harus memenuhi syarat dengan nama skema. Skema harus ada saat tampilan dibuat, bahkan jika tabel yang direferensikan tidak ada. Misalnya, pernyataan berikut mengembalikan kesalahan.
create view myevent as select eventname from event with no schema binding;Pernyataan berikut berjalan dengan sukses.
create view myevent as select eventname from public.event with no schema binding;
catatan
Anda tidak dapat memperbarui, menyisipkan ke, atau menghapus dari tampilan.
Catatan penggunaan
Late-binding pandangan
Tampilan pengikatan terlambat tidak memeriksa objek database yang mendasarinya, seperti tabel dan tampilan lainnya, sampai tampilan ditanyakan. Akibatnya, Anda dapat mengubah atau melepaskan objek yang mendasarinya tanpa menjatuhkan dan membuat ulang tampilan. Jika Anda melepaskan objek yang mendasarinya, kueri ke tampilan pengikatan terlambat akan gagal. Jika kueri ke tampilan pengikatan terlambat mereferensikan kolom di objek dasar yang tidak ada, kueri akan gagal.
Jika Anda melepas dan kemudian membuat ulang tabel atau tampilan dasar tampilan pengikatan terlambat, objek baru dibuat dengan izin akses default. Anda mungkin perlu memberikan izin ke objek yang mendasarinya untuk pengguna yang akan menanyakan tampilan.
Untuk membuat tampilan pengikatan terlambat, sertakan klausa WITH NO SCHEMA BINDING. Contoh berikut membuat tampilan tanpa pengikatan skema.
create view event_vw as select * from public.event with no schema binding;
select * from event_vw limit 1;eventid | venueid | catid | dateid | eventname | starttime --------+---------+-------+--------+---------------+-------------------- 2 | 306 | 8 | 2114 | Boris Godunov | 2008-10-15 20:00:00
Contoh berikut menunjukkan bahwa Anda dapat mengubah tabel yang mendasarinya tanpa membuat ulang tampilan.
alter table event rename column eventname to title;
select * from event_vw limit 1;eventid | venueid | catid | dateid | title | starttime --------+---------+-------+--------+---------------+-------------------- 2 | 306 | 8 | 2114 | Boris Godunov | 2008-10-15 20:00:00
Anda dapat mereferensikan tabel eksternal Amazon Redshift Spectrum hanya dalam tampilan pengikatan terlambat. Salah satu aplikasi tampilan yang mengikat terlambat adalah menanyakan tabel Amazon Redshift dan Redshift Spectrum. Misalnya, Anda dapat menggunakan MEMBONGKAR perintah untuk mengarsipkan data lama ke Amazon S3. Kemudian, buat tabel eksternal Redshift Spectrum yang mereferensikan data di Amazon S3 dan buat tampilan yang menanyakan kedua tabel. Contoh berikut menggunakan klausa UNION ALL untuk bergabung dengan tabel Amazon Redshift dan SALES tabel Redshift SpectrumSPECTRUM.SALES.
create view sales_vw as select * from public.sales union all select * from spectrum.sales with no schema binding;
Untuk informasi selengkapnya tentang membuat tabel eksternal Redshift Spectrum, termasuk SPECTRUM.SALES tabel, lihatMemulai dengan Amazon Redshift Spectrum.
penting
Saat Anda membuat tampilan standar dari tampilan pengikatan terlambat, definisi tampilan standar berisi definisi tampilan pengikatan terlambat pada saat tampilan standar dibuat, termasuk pemilik tampilan pengikatan terlambat. Jika Anda membuat perubahan pada tampilan pengikatan terlambat yang mendasarinya, perubahan tersebut tidak akan digunakan dalam tampilan standar sampai Anda membuat ulang tampilan standar. Oleh karena itu, ketika tampilan standar ditanyakan, itu akan selalu menggunakan definisi tampilan pengikatan terlambat dan pemilik tampilan pengikatan terlambat untuk pemeriksaan izin pada saat pembuatan tampilan standar tersebut.
Untuk memperbarui tampilan standar untuk merujuk ke definisi terbaru dari tampilan pengikatan terlambat, jalankan CREATE OR REPLACE VIEW dengan definisi tampilan awal yang Anda gunakan untuk membuat tampilan standar.
Lihat contoh berikut untuk membuat tampilan standar dari tampilan pengikatan terlambat.
create view sales_vw_lbv as select * from public.sales with no schema binding; show view sales_vw_lbv; Show View DDL statement -------------------------------------------------------------------------------- create view sales_vw_lbv as select * from public.sales with no schema binding; (1 row) create view sales_vw as select * from sales_vw_lbv; show view sales_vw; Show View DDL statement --------------------------------------------------------------------------------------------------------------------- SELECT sales_vw_lbv.price, sales_vw_lbv."region" FROM (SELECT sales.price, sales."region" FROM sales) sales_vw_lbv; (1 row)
Perhatikan bahwa tampilan pengikatan terlambat seperti yang ditunjukkan dalam pernyataan DDL untuk tampilan standar ditentukan saat tampilan standar dibuat, dan tidak akan diperbarui dengan perubahan apa pun yang Anda buat pada tampilan pengikatan terlambat sesudahnya.
Contoh
Perintah contoh menggunakan set sampel objek dan data yang disebut database TICKIT. Untuk informasi selengkapnya, lihat Contoh database.
Perintah berikut membuat tampilan yang disebut myevent dari tabel bernama EVENT.
create view myevent as select eventname from event where eventname = 'LeAnn Rimes';
Perintah berikut membuat tampilan yang disebut myuser dari tabel yang disebut USERS.
create view myuser as select lastname from users;
Perintah berikut membuat atau mengganti tampilan yang disebut myuser dari tabel yang disebut USERS.
create or replace view myuser as select lastname from users;
Contoh berikut membuat tampilan tanpa pengikatan skema.
create view myevent as select eventname from public.event with no schema binding;