Поделиться через


Что такое представление?

Представление — это объект, доступный только для чтения, который является результатом запроса по одной или нескольким таблицам и представлениям в хранилище метаданных каталога Unity. Вы можете создать представление из таблиц и из других представлений в нескольких схемах и каталогах.

В этой статье описываются представления, которые можно создавать в Azure Databricks и предоставляет описание разрешений и вычислений, необходимых для их запроса.

Сведения о создании представлений см. в следующем разделе:

Представления в каталоге Unity

В каталоге Unity представления располагаются на третьем уровне трехуровневого пространства имен (catalog.schema.view):

Схема объектной модели каталога Unity, сфокусированная на виде

Представление обычно хранит текст запроса для одного или нескольких источников данных или таблиц в хранилище метаданных. В 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 в базовых таблицах и представлениях, убедитесь, что рабочую область включена для бессерверных вычислений.

Бессерверные вычислительные ресурсы обрабатывают фильтрацию данных, которая позволяет получить доступ к представлению, не требуя разрешений для базовых таблиц и представлений. Помните, что при использовании выделенных вычислений для запроса к представлениям могут взиматься затраты на бессерверные вычисления. Дополнительные сведения см. в разделе Точное управление доступом для выделенных вычислений (ранее однопользовательских вычислений).