Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется к: Databricks SQL
Databricks Runtime
Создает виртуальную таблицу, которая не содержит физических данных на основе результируемого набора SQL-запроса или представления метрик на основе спецификации yaml. ALTER VIEW и DROP VIEW изменяют только метаданные.
Для выполнения этой инструкции необходимо быть администратором хранилища метаданных или иметь USE CATALOG
USE SCHEMA
привилегии в каталоге и схеме, а также CREATE TABLE
привилегии в целевой схеме.
Пользователь, выполняющий эту команду, станет владельцем представления.
Синтаксис
CREATE [ OR REPLACE ] [ TEMPORARY ] VIEW [ IF NOT EXISTS ] view_name
[ column_list ]
[ with_clause |
COMMENT view_comment |
DEFAULT COLLATION collation_name |
TBLPROPERTIES clause |
LANGUAGE YAML ] [...]
AS { query | $$ yaml_string $$ }
with_clause
WITH { { schema_binding | METRICS } |
( { schema_binding | METRICS } [, ...] } )
schema_binding
WITH SCHEMA { BINDING | COMPENSATION | [ TYPE ] EVOLUTION }
column_list
( { column_alias [ COMMENT column_comment ] } [, ...] )
Параметры
ИЛИ ЗАМЕНИТЬ
Если представление с таким именем уже существует, оно заменяется. Чтобы заменить существующее представление, необходимо быть его владельцем.
Замена существующего представления не сохраняет привилегии, предоставленные в исходном представлении. Используйте ALTER VIEW для сохранения привилегий.
CREATE OR REPLACE VIEW view_name
эквивалентенDROP VIEW IF EXISTS view_name
, за которым следуетCREATE VIEW view_name
.ВРЕМЕННЫЙ
TEMPORARY
представления видны только сеансу, который их создал, и удаляются после завершения сеанса.ГЛОБАЛЬНЫЙ ВРЕМЕННЫЙ
Область применения:
Databricks Runtime
GLOBAL TEMPORARY
представления привязаны к системно-сохраненной временной схемеglobal_temp
.ЕСЛИ НЕ СУЩЕСТВУЕТ
Создает представление, только если оно не существует. Если представление с таким именем уже существует, инструкция
CREATE VIEW
игнорируется.Можно указать не более одного из
IF NOT EXISTS
илиOR REPLACE
.-
Имя созданного представления. Имя временного представления не должно быть квалифицировано. Полностью квалифицированное имя представления должно быть уникальным.
Имена представлений, созданные в
hive_metastore
, могут содержать только буквенно-цифровые символы ASCII и символы подчеркивания (INVALID_SCHEMA_OR_RELATION_NAME). МЕТРИКА
Применяется к:
Databricks SQL
Databricks Runtime 16.4 и выше
.
Определяет представление как представление метрик. Представление должно быть определено с помощью
LANGUAGE YAML
, а текст представления должен быть допустимой спецификацией yaml.Этот пункт не поддерживается для временных представлений.
Метрический вид не поддерживает
DEFAULT COLLATION
иschema_binding
.Спецификация YAML представления метрик определяет
dimensions
иmeasures
. Этоdimensions
— столбцы представления, с помощью которых вызывающий объект может агрегировать меры, тогда какmeasures
определяет агрегаты представления.Вызывающий представление метрик использует выражение меры для доступа к определенным представлениям, а не для указания функций агрегирования.
schema_binding
Область применения:
Databricks Runtime 15.3 и выше
При необходимости указывает, как представление адаптируется к изменениям схемы запроса из-за изменений в определениях базовых объектов.
Этот пункт не поддерживается для временных представлений, метрик или материализованных представлений.
SCHEMA СВЯЗЫВАНИЕ
Представление станет недействительным, если список столбцов запроса изменяется, кроме следующих случаев:
- Список столбцов содержит предложение "Звезда" и есть дополнительные столбцы. Эти дополнительные столбцы игнорируются.
- Тип одного или нескольких столбцов изменился таким образом, что позволяет безопасно приведения их к исходным типам столбцов с помощью неявных правил приведения.
Это поведение принимается по умолчанию.
SCHEMA КОМПЕНСАЦИЯ
Представление станет недействительным, если список столбцов запросов изменяется, за исключением следующих условий:
- Список столбцов содержит предложение "Звезда" и есть дополнительные столбцы. Эти дополнительные столбцы игнорируются.
- Тип одного или нескольких столбцов изменился таким образом, чтобы они были приведены к их исходным типам столбцов с помощью явных правил приведения ANSI.
SCHEMA ЭВОЛЮЦИЯ ТИПОВ
Представление будет принимать любые изменения типов в списке столбцов запросов в собственное определение, когда компилятор SQL обнаруживает такое изменение в ответ на ссылку на представление.
SCHEMA ЭВОЛЮЦИЯ
- Этот режим работает так, как
SCHEMA TYPE EVOLUTION
, а также принимает изменения в именах столбцов или добавляет и удаляет столбцы, если представление не включает явныйcolumn_list
. - Представление станет недействительным только в том случае, если запрос больше не может быть распознан, или необязательный вид
column_list
больше не соответствует количеству выражений в списке выборкиquery
.
- Этот режим работает так, как
column_list
При необходимости можно задать метки для столбцов в результатах запроса представления. Если указан список столбцов, количество псевдонимов столбцов должно совпадать с количеством выражений в запросе, а для представлений метрик — со спецификацией YAML. В случае, если список столбцов не указан, псевдонимы выводятся из тела представления.
-
Псевдонимы столбцов должны быть уникальными.
column_comment
Необязательный
STRING
литерал, описывающий псевдоним столбца.
-
view_comment
Необязательный литерал, предоставляющий
STRING
комментарии на уровне представления.КОЛЛАЦИЯ ПО УМОЛЧАНИЮ collation_name
Применяется к:
Databricks SQL
Databricks Runtime 16.3 и более поздних версий
Определяет параметры сортировки по умолчанию, используемые в
query
. Если не указано, параметры сортировки по умолчанию —UTF8_BINARY
a.Эта клауза не поддерживается для видов метрик.
-
При необходимости задает одно или несколько свойств, определяемых пользователем.
AS ЗАПРОС
Запрос, который создает представление из базовых таблиц или других представлений.
Этот пункт не поддерживается для метрических представлений.
AS $$ yaml_string $$
Спецификация yaml, определяющая представление метрик.
Примеры
-- 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
---- ------
-- Create a view using a default collation of UTF8_BINARY
> CREATE VIEW v DEFAULT COLLATION UTF8_BINARY
AS SELECT 5::STRING AS text;
-- Creates a Metric View as specified in the YAML definition, with three dimensions and four measures representing the count of orders.
> CREATE OR REPLACE VIEW region_sales_metrics
(month COMMENT 'Month order was made',
status,
order_priority,
count_orders COMMENT 'Count of orders',
total_Revenue,
total_Revenue_p_Customer,
total_revenue_for_open_orders)
WITH METRICS
LANGUAGE YAML
COMMENT 'A Metric View for regional sales metrics.'
AS $$
version: 0.1
source: samples.tpch.orders
filter: o_orderdate > '1990-01-01'
dimensions:
- name: month
expr: date_trunc('MONTH', o_orderdate)
- name: status
expr: case
when o_orderstatus = 'O' then 'Open'
when o_orderstatus = 'P' then 'Processing'
when o_orderstatus = 'F' then 'Fulfilled'
end
- name: prder_priority
expr: split(o_orderpriority, '-')[1]
measures:
- name: count_orders
expr: count(1)
- name: total_revenue
expr: SUM(o_totalprice)
- name: total_revenue_per_customer
expr: SUM(o_totalprice) / count(distinct o_custkey)
- name: total_revenue_for_open_orders
expr: SUM(o_totalprice) filter (where o_orderstatus='O')
$$;
> DESCRIBE EXTENDED region_sales_metrics;
col_name data_type
------------------------------ --------------------------
month timestamp
status string
order_priority string
count_orders bigint measure
total_revenue decimal(28,2) measure
total_revenue_p_customer decimal(38,12) measure
total_revenue_for_open_orders decimal(28,2) measure
# Detailed Table Information
Catalog main
Database default
Table region_sales_metrics
Owner [email protected]
Created Time Thu May 15 13:03:01 UTC 2025
Last Access UNKNOWN
Created By Spark
Type METRIC_VIEW
Comment A Metric View for regional sales metrics.
Use Remote Filtering false
View Text "
version: 0.1
source: samples.tpch.orders
filter: o_orderdate > '1990-01-01'
dimensions:
- name: month
expr: date_trunc('MONTH', o_orderdate)
- name: status
expr: case
when o_orderstatus = 'O' then 'Open'
when o_orderstatus = 'P' then 'Processing'
when o_orderstatus = 'F' then 'Fulfilled'
end
- name: Order_Priority
expr: split(o_orderpriority, '-')[1]
measures:
- name: count_orders
expr: count(1)
- name: total_Revenue
expr: SUM(o_totalprice)
- name: total_Revenue_per_Customer
expr: SUM(o_totalprice) / count(distinct o_custkey)
- name: Total_Revenue_for_Open_Orders
expr: SUM(o_totalprice) filter (where o_orderstatus='O')
"
Language YAML
Table Properties [metric_view.from.name=samples.tpch.orders, metric_view.from.type=ASSET, metric_view.where=o_orderdate > '1990-01-01']
-- Tracking total_revenue_per_customer by month in 1995
> SELECT extract(month from month) as month,
measure(total_revenue_per_customer)::bigint AS total_revenue_per_customer
FROM region_sales_metrics
WHERE extract(year FROM month) = 1995
GROUP BY ALL
ORDER BY ALL;
month total_revenue_per_customer
----- --------------------------
1 167727
2 166237
3 167349
4 167604
5 166483
6 167402
7 167272
8 167435
9 166633
10 167441
11 167286
12 167542
-- Tracking total_revenue_per_customer by month and status in 1995
> SELECT extract(month from month) as month,
status,
measure(total_revenue_per_customer)::bigint AS total_revenue_per_customer
FROM region_sales_metrics
WHERE extract(year FROM month) = 1995
GROUP BY ALL
ORDER BY ALL;
month status total_revenue_per_customer
----- --------- --------------------------
1 Fulfilled 167727
2 Fulfilled 161720
2 Open 40203
2 Processing 193412
3 Fulfilled 121816
3 Open 52424
3 Processing 196304
4 Fulfilled 80405
4 Open 75630
4 Processing 196136
5 Fulfilled 53460
5 Open 115344
5 Processing 196147
6 Fulfilled 42479
6 Open 160390
6 Processing 193461
7 Open 167272
8 Open 167435
9 Open 166633
10 Open 167441
11 Open 167286
12 Open 167542