CREATE VIEW

CREATE VIEW создаёт независимое представление.

В YQL over YTsaurus поддержаны 2 вида представлений: независимые, которые могут обращаться к произвольным таблицам кластера, и представления, которые привязаны к конкретной таблице.

Доступность

CREATE VIEW доступен начиная с версии языка 2025.05.

Синтаксис

CREATE VIEW [IF NOT EXISTS] [cluster.]`//path/to/view` AS
DO BEGIN
<top_level_statements>
END DO

Данный запрос создаст на кластере cluster, а если не указано — то на текущем кластере, независимое представление по пути //path/to/view, которое состоит из блока команд <top_level_statements>.

В <top_level_statements> можно использовать только те команды, которые допустимы в DEFINE SUBQUERY. Нельзя использовать команду USE или явное задание кластера для таблиц — в представлении можно обращаться только к таблицам того кластера, на котором это представление находится. В отличие от DEFINE SUBQUERY, команды в CREATE VIEW не должны ссылаться на какие-либо значения за пределами тела CREATE VIEW.

Если по пути //path/to/view уже есть какой-то объект, то создание представления завершится с ошибкой.
Если при этом указан модификатор IF NOT EXISTS, то ошибка не возникает, но команда CREATE VIEW не приводит к созданию представления (завершается без результата).

Внимание

Пока не поддерживается создание представления и его использование в рамках одного YQL запроса.
При создании представлений следует помнить, что версия языка для представления будет определяться запросом, в котором это представление используется, а не запросом, в котором это представление создается.
Аналогичное правило действует и для библиотек.

Пример

USE cluster;
$now = CurrentUtcDate();

CREATE VIEW `//home/yql/tutorial/users_with_birth_year` AS
DO BEGIN

$now = CurrentUtcDate(); -- нельзя ссылаться на именованные выражения снаружи

$year_of_birth = ($age) -> (DateTime::GetYear(DateTime::ShiftYears($now, -(cast($age as Int32) ?? 0))));

SELECT $year_of_birth(age) AS birth_year, t.* WITHOUT age FROM `//home/yql/tutorial/users` AS t;

END DO;

Как использовать созданное представление можно посмотреть в разделе SELECT VIEW.

См. также

Предыдущая
Следующая