CREATE MATERIALIZED VIEW#

Синтаксис#

CREATE [ OR REPLACE ] MATERIALIZED VIEW
[ IF NOT EXISTS ] view_name
[ GRACE PERIOD interval ]
[ COMMENT string ]
[ WITH properties ]
AS query

Описание#

Создает материализованное представление на основе переданного запроса. После создания материализованного представления необходимо запустить команду REFRESH MATERIALIZED VIEW, чтобы наполнить представление данными.

Материализованные представления хранят копию данных, возвращенных запросом. За счет этого запрос к материализованному представлению может вернуть данные быстрее, чем выполнение соответствующего запроса, или обращение к виртуальному представлению, созданному командой CREATE VIEW.

Необязательное выражение IF NOT EXISTS позволяет завершить выполнение команды без ошибки, если материализованное представление уже существует. Существующее материализованное представление при этом не будет пересоздано.

Необязательное выражение OR REPLACE имеет семантику, аналогичную IF NOT EXISTS, но заменяет существующее материализованное представление на новое.

Выражения OR REPLACE и IF NOT EXISTS являются взаимоисключающими.

Необязательное выражение GRACE PERIOD указывает, сколько времени можно использовать данные материализованного представления после его обновления командой REFRESH MATERIALIZED VIEW. Если GRACE PERIOD превышен, любое обращение к материализованному представлению будет приводить к выполнению базового запроса.

Необязательное выражение COMMENT сохраняет строковый комментарий о материализованном представлении. Комментарий можно отобразить с помощью команды SHOW CREATE MATERIALIZED VIEW или получить из системной таблицы.

Необязательное выражение WITH можно использовать для установки свойств создаваемого материализованного представления. Список доступных свойств зависит от каталога. Чтобы получить список всех доступных свойств материализованного представления для всех каталогов, выполните следующий запрос:

SELECT * FROM system.metadata.schema_properties

Запрос может вернуть пустой результат, если ни один из сконфигурированных каталогов не имеет доступных свойств материализованного представления.

После успешного создания материализованного представления, можно получить его метаданные из системной таблицы.

Примеры#

Создает материализованное представление cancelled_orders:

CREATE MATERIALIZED VIEW cancelled_orders
AS
    SELECT orderkey, totalprice
    FROM orders
    WHERE orderstatus = 3;

Создает или заменяет материализованное представление order_totals_by_date:

CREATE OR REPLACE MATERIALIZED VIEW order_totals_by_date
AS
    SELECT orderdate, sum(totalprice) AS price
    FROM orders
    GROUP BY orderdate;

Создает материализованное представление с комментарием и свойствами для каталога Iceberg:

CREATE MATERIALIZED VIEW orders_nation_mkgsegment
COMMENT 'Orders with nation and market segment data'
WITH ( partitioning = ARRAY['mktsegment', 'nationkey'] )
AS
    SELECT o.*, c.nationkey, c.mktsegment
    FROM orders AS o
    JOIN customer AS c
    ON o.custkey = c.custkey;

Пример установки нескольких свойств материализованного представления:

WITH ( format = 'ORC', partitioning = ARRAY['_date'] )

Показывает метаданные о материализованных представлениях во всех каталогах:

SELECT * FROM system.metadata.materialized_views;

См. также#

ALTER MATERIALIZED VIEW, DROP MATERIALIZED VIEW, REFRESH MATERIALIZED VIEW, SHOW CREATE MATERIALIZED VIEW