TWORZENIE WIDOKU
Dotyczy: Databricks SQL 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: Databricks Runtime
Globalne widoki TYMCZASOWE są powiązane z systemem zachowanym schematem
global_temp
tymczasowym .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 lubOR REPLACE
.-
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: 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 jawnegocolumn_list
elementu . - 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ń naquery
liście wyboru.
- Ten tryb działa jak
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.
-
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.-
Opcjonalnie ustawia co najmniej jedną właściwość zdefiniowaną przez użytkownika.
-
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
---- ------