Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Как и стандартные представления, материализованные представления являются результатами запроса, и вы обращаетесь к ним так же, как и таблица. В отличие от стандартных представлений, которые перекомпьютируют результаты для каждого запроса, материализованные представления кэшируют результаты и обновляют их по указанному интервалу. Поскольку материализованное представление предварительно вычисляется, запросы к нему могут выполняться гораздо быстрее, чем запросы к обычным представлениям.
Рекомендации по использованию материализованных представлений и потоковых таблиц или представлений см. в статье "Что такое конвейеры?".
Материализованное представление — это декларативный объект потока обработки данных. Он включает запрос , определяющий его, поток обновления и кэшированные результаты для быстрого доступа. Материализованное представление:
- Отслеживает изменения в восходящих данных.
- При активации постепенно обрабатывает измененные данные и применяет необходимые преобразования.
- Поддерживает выходную таблицу в синхронизации с исходными данными на основе указанного интервала обновления.
Материализованные представления являются хорошим выбором для многих преобразований:
- Вместо строк используется логика кэшированных результатов. На самом деле вы просто пишете запрос.
- Они всегда верны на момент обновления. Все необходимые данные обрабатываются, даже если он поступает поздно или не упорядочен.
- Они часто постепенные. Azure Databricks пытается выбрать соответствующую стратегию, которая сводит к минимуму затраты на обновление материализованного представления.
Как материализованные представления работают
На следующей схеме показано, как работают материализованные представления.
Материализованные представления определяются и обновляются одним потоком обработки данных. Вы можете явно определить материализованные представления в исходном коде конвейера. Таблицы, определенные конвейером, не могут быть изменены или обновлены любым другим конвейером.
Note
При создании автономного материализованного представления за пределами конвейера Lakeflow Azure Databricks создает конвейер, используемый для обновления представления. Можно увидеть конвейер, выбрав в рабочей области пункт ETL. Отдельные материализованные представления имеют тип MV/ST. См. раздел "Использование автономных материализованных представлений".
Azure Databricks использует каталог Unity для хранения метаданных о представлении, включая запрос и дополнительные системные представления для добавочных обновлений. Azure Databricks материализует кэшированные данные в облачном хранилище. Azure Databricks хранит некоторые резервные данные в каталоге__databricks_internal. См. __databricks_internal каталог.
Note
Azure Databricks создает внутренние таблицы для поддержки инкрементного обновления материализованного представления. Эти таблицы отображаются в system.information_schema.tables, но не видны в обозревателе каталогов или других поверхностях пользовательского интерфейса рабочей области.
Следующий пример объединяет две таблицы и сохраняет результат в актуальном состоянии с помощью материализованного представления.
Python
from pyspark import pipelines as dp
@dp.materialized_view
def regional_sales():
partners_df = spark.read.table("partners")
sales_df = spark.read.table("sales")
return (
partners_df.join(sales_df, on="partner_id", how="inner")
)
SQL
CREATE OR REPLACE MATERIALIZED VIEW regional_sales
AS SELECT *
FROM partners
INNER JOIN sales ON
partners.partner_id = sales.partner_id;
Автоматические инкрементные обновления
Когда конвейер, определяющий материализованное представление, активируется, представление автоматически сохраняется в актуальном состоянии, часто постепенно. Azure Databricks пытается обработать только данные, которые должны обрабатываться для актуального материализованного представления. Материализованное представление всегда показывает правильный результат, даже если требуется полностью перекомпитировать результат запроса с нуля, но часто Azure Databricks делает только добавочные обновления материализованного представления, что может быть гораздо менее дорогостоящим, чем полная рекомпьюция.
На схеме ниже показано материализованное представление sales_report, которое является результатом объединения двух вышестоящих таблиц clean_customers и clean_transactionsгруппирования по странам. Вышестоящий процесс вставляет 200 строк в clean_customers для трех стран (США, Нидерланды, Великобритания) и обновляет 5000 строк в clean_transactions в соответствии с этими новыми клиентами. Материализованное sales_report представление постепенно обновляется только для стран с новыми клиентами или соответствующими транзакциями. В этом примере три строки обновляются вместо всего отчета о продажах.
Дополнительные сведения о том, как добавочное обновление работает в материализованных представлениях, см. в разделе добавочное обновление для материализованных представлений.
Ограничения материализованного представления
Материализованные представления имеют следующие ограничения:
- Так как обновления создают правильные запросы, некоторые изменения входных данных требуют полной повторной компиляции материализованного представления, что может быть дорогостоящим.
- Они не предназначены для задач, требующих низкой задержки. Задержка обновления материализованного представления находится в секундах или минутах, а не в миллисекундах.
- Не все вычисления можно вычислить постепенно.
- Azure Databricks пытается определить, когда UDF, используемый в материализованном представлении, изменяет поведение и выполняет полное обновление, чтобы применить обновленный UDF. Тем не менее определяемые пользователем функции (UDF), которые вызывают другие функции или используют библиотеки, могут изменять поведение таким образом, что Azure Databricks не сможет это распознать. Одним из примеров этого является обновление вызываемой библиотеки. Когда поведение UDF изменяется, вы несете ответственность за полное обновление любого материализованного представления, использующего его.
- Материализованные представления не поддерживают
CLONE. Материализованное представление нельзя использовать в качестве источника или цели глубокого или поверхностного клона. Дополнительные сведения см. в статье Ограничения. - Чтобы просмотреть конвейер, лежащий в основе материализованного представления, пользователю без прав администратора помимо разрешений на конвейер требуется привилегия
REFRESHдля материализованного представления. Узнайте , кто может просматривать конвейер и его выходные данные?.