Что такое представление?
Представление — это объект, доступный только для чтения, который является результатом запроса по одной или нескольким таблицам и представлениям в хранилище метаданных каталога Unity. Вы можете создать представление из таблиц и из других представлений в нескольких схемах и каталогах.
В этой статье описываются представления, которые можно создавать в Azure Databricks и предоставляет описание разрешений и вычислений, необходимых для их запроса.
Сведения о создании представлений см. в следующем разделе:
Представления в каталоге Unity
В каталоге Unity представления располагаются на третьем уровне трехуровневого пространства имен (catalog.schema.view
):
Представление обычно хранит текст запроса для одного или нескольких источников данных или таблиц в хранилище метаданных. В Azure Databricks представление аналогично объекту Spark DataFrame, сохраненному в схеме. В отличие от DataFrame, можно запрашивать представления из любого места в Azure Databricks, при условии, что у вас есть разрешение на это. Создание представления не обрабатывает и не записывает данные. Только текст запроса регистрируется в хранилище метаданных в связанной схеме.
Примечание.
Представления могут иметь другую семантику выполнения, если они поддерживаются источниками данных, отличными от разностных таблиц. Databricks рекомендует всегда определять представления, ссылаясь на источники данных с помощью имени таблицы или представления. Определение представлений для наборов данных путем указания пути или URI может привести к путанице требований к управлению данными.
Материализованные представления
Материализованные представления постепенно вычисляют и обновляют результаты, возвращаемые определяющим запросом. Материализованные представления в Azure Databricks представляют собой особый вид таблиц Delta. В то время как все другие представления в Azure Databricks вычисляют результаты путем оценки логики, определяемой представлением при запросе, материализованные представления обрабатывают результаты и сохраняют их в базовой таблице при обработке обновлений с помощью расписания обновления или запуска обновления конвейера.
Вы можете зарегистрировать материализованные представления в каталоге Unity с помощью Databricks SQL или определить их как часть конвейера DLT. См. статью Использование материализованных представлений в Databricks SQL и Что такое DLT?.
Временные представления
Временное представление имеет ограниченную область и сохраняемость и не регистрируется в схеме или каталоге. Время существования временного представления зависит от используемой среды.
- В блокнотах и задачах временные представления ограничены уровнем блокнота или скрипта. На них нельзя ссылаться за пределами записной книжки, в которой они объявлены, и они перестают существовать, когда записная книжка отсоединяется от кластера.
- В Databricks SQL временные представления ограничены уровнем запроса. Несколько инструкций в одном запросе могут использовать временное представление, однако на него нельзя ссылаться в других запросах даже в рамках одной панели мониторинга.
Динамические представления
Динамические представления можно использовать для обеспечения управления доступом на уровне строк и столбцов в дополнение к маскировке данных. См. раздел Создание динамического представления.
Представления в хранилище метаданных Hive (устаревшее)
Вы можете определить устаревшие представления Hive для любого источника данных и зарегистрировать их в устаревшем хранилище метаданных Hive. Databricks рекомендует перенести все устаревшие представления Hive в каталог Unity. Виды см. в хранилище метаданных Hive.
Глобальное временное представление Hive (устаревшая версия)
Глобальные временные представления — это устаревшая функция Azure Databricks, которая позволяет зарегистрировать временное представление, доступное для всех рабочих нагрузок, работающих с вычислительным ресурсом. Глобальные временные представления — это устаревший пережиток систем Hive и HDFS. Databricks не рекомендует использовать глобальные временные представления.
требования к запросам представлений
Для чтения представлений, зарегистрированных в каталоге Unity, необходимые разрешения зависят от типа вычислений, версии Databricks Runtime и режима доступа.
Примечание.
Для всех представлений проверки разрешений выполняются как в самом представлении, так и в базовых таблицах и представлениях, на основе которых создано представление. Пользователь, разрешения которого проверяются для базовых таблиц и представлений, зависит от вычислительных ресурсов. В следующем каталоге Unity проверяется разрешение владельца представления на базовые данные:
- Хранилища SQL.
- Стандартные вычислительные ресурсы (ранее общие вычислительные ресурсы).
- Выделенные вычислительные ресурсы (ранее однопользовательские вычисления) в Databricks Runtime 15.4 LTS и более поздних версий с поддержкой точного управления доступом.
Для специализированных вычислений в Databricks Runtime 15.3 и ниже Каталог Unity проверяет разрешения владельца представления и разрешения пользователя представления на исходные данные.
Это поведение отражается в требованиях, перечисленных ниже. В любом случае, владелец представления должен сохранять разрешения на основные данные, чтобы пользователи могли получить доступ к представлению.
- Для всех вычислительных ресурсов необходимо иметь
SELECT
в самом представлении,USE CATALOG
в родительском каталоге иUSE SCHEMA
в родительской схеме. Это относится ко всем типам вычислений, которые поддерживают каталог Unity, включая хранилища SQL, кластеры в стандартном режиме доступа и кластеры в выделенном режиме доступа в Databricks Runtime 15.4 и более поздних версий. - Для кластеров Databricks Runtime 15.3 и ниже, использующих выделенный режим доступа, необходимо также обеспечить наличие
SELECT
на всех таблицах и представлениях, на которые ссылается этот представление, в дополнение кUSE CATALOG
на их родительские каталоги иUSE SCHEMA
на их родительские схемы.
Примечание.
Если вы используете выделенный кластер в Databricks Runtime 15.4 LTS и выше, и вы хотите избежать необходимости SELECT
в базовых таблицах и представлениях, убедитесь, что рабочую область включена для бессерверных вычислений.
Бессерверные вычислительные ресурсы обрабатывают фильтрацию данных, которая позволяет получить доступ к представлению, не требуя разрешений для базовых таблиц и представлений. Помните, что при использовании выделенных вычислений для запроса к представлениям могут взиматься затраты на бессерверные вычисления. Дополнительные сведения см. в разделе Точное управление доступом для выделенных вычислений (ранее однопользовательских вычислений).