Bagikan melalui


BUAT TAMPILAN

Berlaku untuk: centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime

Membuat tabel virtual yang tidak memiliki data fisik berdasarkan kumpulan hasil kueri SQL. ALTER VIEW dan DROP VIEW hanya mengubah metadata.

Sintaks

CREATE [ OR REPLACE ] [ TEMPORARY ] VIEW [ IF NOT EXISTS ] view_name
    [ column_list ]
    [ schema_binding ]
    [ COMMENT view_comment ]
    [ TBLPROPERTIES clause ]
    AS query

schema_binding
   WITH SCHEMA { BINDING | COMPENSATION | [ TYPE ] EVOLUTION }

column_list
   ( { column_alias [ COMMENT column_comment ] } [, ...] )

Parameter

  • OR REPLACE

    Jika tampilan dengan nama yang sama sudah ada, nama tampilan tersebut akan diganti. Untuk mengganti tampilan yang ada, Anda harus menjadi pemiliknya.

    Mengganti tampilan yang ada tidak mempertahankan hak istimewa yang diberikan pada tampilan asli. Gunakan ALTER VIEW untuk mempertahankan hak istimewa.

  • SEMENTARA

    Tampilan TEMPORARY hanya terlihat oleh sesi yang membuatnya dan dijatuhkan saat sesi berakhir.

  • GLOBAL SEMENTARA

    Berlaku untuk: centang ditandai ya Databricks Runtime

    Tampilan GLOBAL TEMPORARY terkait dengan sistem skema sementara yang dipertahankanglobal_temp.

  • IF NOT EXISTS

    Membuat tampilan hanya jika tidak ada. Jika tampilan dengan nama ini sudah ada, pernyataan CREATE VIEW diabaikan.

    Anda dapat menentukan paling banyak salah satu IF NOT EXISTS atau OR REPLACE.

  • view_name

    Nama tampilan yang baru dibuat. Nama tampilan sementara tidak boleh memenuhi syarat. Nama tampilan yang sepenuhnya memenuhi syarat harus unik.

    Tampilan yang dibuat hive_metastore hanya dapat berisi karakter dan garis bawah ASCII alfanumerik (INVALID_SCHEMA_OR_RELATION_NAME).

  • schema_binding

    Berlaku untuk: centang ditandai ya Databricks Runtime 15.3 ke atas

    Secara opsional menentukan bagaimana tampilan beradaptasi dengan perubahan pada skema kueri karena perubahan dalam definisi objek yang mendasar.

    Klausa ini tidak didukung untuk tampilan sementara atau tampilan materialisasi.

    • DENGAN PENGIKATAN SKEMA

      Tampilan akan menjadi tidak valid jika daftar kolom kueri berubah kecuali untuk kondisi berikut:

      • Daftar kolom menyertakan klausa bintang, dan ada kolom tambahan. Kolom tambahan ini diabaikan.
      • Jenis satu atau beberapa kolom berubah dengan cara yang memungkinkan mereka untuk ditransmisika dengan aman ke jenis kolom asli menggunakan aturan transmisi implisit.

      Ini adalah perilaku default.

    • DENGAN KOMPENSASI SKEMA

      Tampilan akan menjadi tidak valid jika daftar kolom kueri berubah kecuali untuk kondisi berikut:

      • Daftar kolom menyertakan klausa bintang, dan ada kolom tambahan. Kolom tambahan ini diabaikan.
      • Jenis satu atau beberapa kolom berubah dengan cara yang memungkinkan mereka untuk ditransmisika ke jenis kolom asli menggunakan aturan cast ANSI eksplisit.
    • DENGAN EVOLUSI JENIS SKEMA

      Tampilan akan mengadopsi perubahan apa pun pada jenis dalam daftar kolom kueri ke dalam definisinya sendiri ketika pengkompilasi SQL mendeteksi perubahan seperti itu sebagai respons terhadap referensi ke tampilan.

    • DENGAN EVOLUSI SKEMA

      • Mode ini berprilaku seperti WITH SCHEMA TYPE EVOLUTION, dan juga mengadopsi perubahan dalam nama kolom atau kolom yang ditambahkan dan dihilangkan jika tampilan tidak menyertakan eksplisit column_list.
      • Tampilan hanya akan menjadi tidak valid jika kueri tidak lagi dapat diurai, atau tampilan column_list opsional tidak cocok dengan jumlah ekspresi dalam daftar pilih query lagi.
  • column_list

    Secara opsional, beri label pada kolom dalam hasil kueri tampilan. Jika Anda memberikan daftar kolom, jumlah alias kolom harus sesuai dengan jumlah ekspresi dalam kueri. Jika tidak ada daftar kolom yang ditentukan, alias berasal dari isi tampilan.

    • column_alias

      Alias kolom harus unik.

    • column_comment

      Literal opsional STRING yang menjelaskan alias kolom.

  • view_comment

    Literal opsional STRING yang memberikan komentar tingkat tampilan.

  • TBLPROPERTIES

    Secara opsional, atur satu atau beberapa properti yang ditentukan pengguna.

  • AS kueri

    Kueri yang membuat tampilan dari tabel dasar atau tampilan lainnya.

Contoh

-- Create or replace view for `experienced_employee` with comments.
> CREATE OR REPLACE VIEW experienced_employee
    (id COMMENT 'Unique identification number', Name)
    COMMENT 'View for experienced employees'
    AS SELECT id, name
         FROM all_employee
        WHERE working_years > 5;

-- Create a temporary view `subscribed_movies`.
> CREATE TEMPORARY VIEW subscribed_movies
    AS SELECT mo.member_id, mb.full_name, mo.movie_title
         FROM movies AS mo
         INNER JOIN members AS mb
            ON mo.member_id = mb.id;

-- Create a view with schema binding (default)
> CREATE TABLE emp(name STRING, income INT);
> CREATE VIEW emp_v WITH SCHEMA BINDING AS SELECT * FROM emp;

– The view ignores adding a column to the base table
> ALTER TABLE emp ADD COLUMN bonus SMALLINT;
> SELECT * FROM emp_v;
name  income
----  ------

-- The view tolerates narrowing the underlying type
> CREATE OR REPLACE TABLE emp(name STRING, income SMALLINT, bonus SMALLINT);
> SELECT typeof(income) FROM emp_v;
 INTEGER

– The view does not tolerate widening the underlying type
CREATE OR REPLACE TABLE emp(name STRING, income BIGINT, bonus SMALLINT);
> SELECT typeof(income) FROM emp_v;
 Error

– Create a view with SCHEMA COMPENSATION
> CREATE TABLE emp(name STRING, income SMALLINT, bonus SMALLINT);
> CREATE VIEW emp_v WITH SCHEMA COMPENSATION AS SELECT * FROM emp;

-- The view tolerates widening the underlying type but keeps its own signature fixed
CREATE OR REPLACE TABLE emp(name STRING, income INTEGER, bonus INTEGER);
> SELECT typeof(income) FROM emp_v;
 INTEGER

-- The view does not tolerate dropping a needed column
ALTER TABLE emp DROP COLUMN bonus;
> SELECT * FROM emp_v;
Error

– Create a view with SCHEMA EVOLUTION
> CREATE TABLE emp(name STRING, income SMALLINT);
> CREATE VIEW emp_v WITH SCHEMA EVOLUTION AS SELECT * FROM emp;

-- The view picks up additional columns
> ALTER TABLE emp ADD COLUMN bonus SMALLINT
> SELECT * FROM emp_v;
 name income bonus
 ---- ------ -----

-- The view picks up renamed columns as well
> ALTER TABLE emp RENAME COLUMN income TO salary SMALLINT;
> SELECT * FROM emp_v;
 name salary bonus
 ---- ------ -----

-- The view picks up changes to column types and dropped columns
> CREATE OR REPLACE TABLE emp(name STRING, salary BIGINT);
> SELECT *, typeof(salary)AS salary_type FROM emp_v;
 name salary
 ---- ------