Udostępnij za pośrednictwem


TWORZENIE WIDOKU

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

Tworzy tabelę wirtualną, która nie ma danych fizycznych na podstawie zestawu wyników zapytania SQL. ALTER VIEW i DROP VIEW zmieniają tylko metadane.

Składnia

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 ] } [, ...] )

Parametry

  • LUB ZASTĄP

    Jeśli widok o tej samej nazwie już istnieje, zostanie zastąpiony. Aby zastąpić istniejący widok, musisz być jego właścicielem.

    Zamiana istniejącego widoku nie zachowuje uprawnień przyznanych w oryginalnym widoku. Użyj funkcji ALTER VIEW , aby zachować uprawnienia.

  • TYMCZASOWY

    Widoki TYMCZASOWE są widoczne tylko dla sesji, która je utworzyła i są usuwane po zakończeniu sesji.

  • GLOBALNE TYMCZASOWE

    Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks Runtime

    Globalne widoki TYMCZASOWE są powiązane z systemem zachowanym schematem global_temptymczasowym .

  • JEŚLI NIE ISTNIEJE

    Tworzy widok tylko wtedy, gdy nie istnieje. Jeśli widok o tej nazwie już istnieje, CREATE VIEW instrukcja jest ignorowana.

    Możesz określić co najwyżej jeden z IF NOT EXISTS elementów lub OR REPLACE.

  • view_name

    Nazwa nowo utworzonego widoku. Nazwa widoku tymczasowego nie może być kwalifikowana. W pełni kwalifikowana nazwa widoku musi być unikatowa.

    Widoki utworzone w programie hive_metastore mogą zawierać tylko znaki alfanumeryczne ASCII i podkreślenia (INVALID_SCHEMA_OR_RELATION_NAME).

  • schema_binding

    Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks Runtime 15.3 i nowsze

    Opcjonalnie określa sposób dostosowywania widoku do zmian w schemacie zapytania z powodu zmian w definicjach obiektów bazowych.

    Ta klauzula nie jest obsługiwana w przypadku widoków tymczasowych ani zmaterializowanych widoków.

    • Z POWIĄZANIEM SCHEMATU

      Widok stanie się nieprawidłowy, jeśli lista-kolumn kwerendy zmieni się z wyjątkiem następujących warunków:

      • Lista-kolumn zawiera klauzulę gwiazdki i istnieją dodatkowe kolumny. Te dodatkowe kolumny są ignorowane.
      • Typ co najmniej jednej kolumny zmienił się w sposób, który umożliwia bezpieczne rzutowanie ich do oryginalnych typów kolumn przy użyciu niejawnych reguł rzutowania.

      To jest zachowanie domyślne.

    • Z KOMPENSACJĄ SCHEMATU

      Widok stanie się nieprawidłowy, jeśli lista kolumn zapytania zmieni się z wyjątkiem następujących warunków:

      • Lista-kolumn zawiera klauzulę gwiazdki i istnieją dodatkowe kolumny. Te dodatkowe kolumny są ignorowane.
      • Typ co najmniej jednej kolumny zmienił się w sposób umożliwiający rzutowanie ich do oryginalnych typów kolumn przy użyciu jawnych reguł rzutowania ANSI.
    • Z EWOLUCJĄ TYPU SCHEMATU

      Widok przyjmie wszelkie zmiany typów na liście kolumn zapytania do własnej definicji, gdy kompilator SQL wykryje taką zmianę w odpowiedzi na odwołanie do widoku.

    • Z EWOLUCJĄ SCHEMATU

      • Ten tryb działa jak WITH SCHEMA TYPE EVOLUTION, a także przyjmuje zmiany w nazwach kolumn lub dodane i porzucone kolumny, jeśli widok nie zawiera jawnego column_listelementu .
      • Widok stanie się nieprawidłowy tylko wtedy, gdy zapytanie nie będzie już analizowane lub widok column_list opcjonalny nie jest już zgodny z liczbą wyrażeń na query liście wyboru.
  • column_list

    Opcjonalnie etykietuje kolumny w wyniku zapytania widoku. Jeśli podasz listę kolumn, liczba aliasów kolumn musi być zgodna z liczbą wyrażeń w zapytaniu. Jeśli żadna lista kolumn nie jest określona, aliasy pochodzą z treści widoku.

    • column_alias

      Aliasy kolumn muszą być unikatowe.

    • column_comment

      Opcjonalny STRING literał opisujący alias kolumny.

  • view_comment

    Opcjonalny STRING literał zapewniający komentarze na poziomie widoku.

  • TBLPROPERTIES

    Opcjonalnie ustawia co najmniej jedną właściwość zdefiniowaną przez użytkownika.

  • Zapytanie AS

    Zapytanie, które konstruuje widok z tabel podstawowych lub innych widoków.

Przykłady

-- 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
 ---- ------