Что такое схемы Lakehouse?

Схемы Lakehouse в Microsoft Fabric позволяют группировать таблицы в именованные коллекции, такие как sales, marketing или hr. Для нескольких функций Fabric требуются озера с поддержкой схемы:

  • Упорядочение таблиц по домену — просмотр таблиц по бизнес-областям вместо неструктурированного списка, что становится все более важным по мере увеличения числа таблиц.
  • Управление доступом на уровне схемы — предоставление разным командам доступа к различным схемам и применение безопасности на уровне строк и столбцов к таблицам в схемах.
  • Запрос между рабочими областями — справочные таблицы с четырьмя частью пространства имен (workspace.lakehouse.schema.table) для объединения данных из нескольких озерных домов и рабочих областей в одном запросе Spark SQL.
  • Reference внешних данных с сочетаниями клавиш схемы — сопоставление схемы с папкой в другом lakehouse или в Azure Data Lake Storage (ADLS) 2-го поколения, поэтому внешние таблицы Delta отображаются как локальные таблицы.
  • Используйте расширенные функции . Такие функции, как материализованные представления озера , требуют использования озерных домов с поддержкой схемы.
  • Имя схемы — имя схемы может содержать только буквы, цифры и символы подчеркивания (_).

Если у вас есть существующий озерный дом, созданный до того, как стали доступны схемы, см. статью "Включение схем для существующих озерных домов".

Создайте схему lakehouse

Схемы включены по умолчанию, когда вы создаете Lakehouse на портале Fabric. Чтобы включить поддержку схемы, установите флажок рядом с Lakehouse schemas при создании lakehouse. Если вы создаете озеро данных с помощью REST API, необходимо явно включить схемы, см. раздел "Создание озера данных со схемами с помощью REST API".

Снимок экрана: новое диалоговое окно Lakehouse.

Замечание

Если вы предпочитаете создать lakehouse без поддержки схемы, снимите флажок.

Каждое озеро с поддержкой схемы включает схему dbo по умолчанию в таблицах , которые нельзя переименовать или удалить.

Чтобы создать новую схему, наведите указатель мыши на таблицы, выберите ...и выберите "Создать схему". Введите имя схемы и нажмите кнопку "Создать". Схема отображается в разделе "Таблицы " в алфавитном порядке.

Снимок экрана: диалоговое окно новой схемы Lakehouse.

Хранение таблиц в схемах Lakehouse

В коде необходимо включить имя схемы при сохранении таблицы, чтобы сохранить ее в определенной схеме. Без имени схемы таблица переходит к схеме dbo по умолчанию.

# schema.table
df.write.mode("overwrite").saveAsTable("marketing.productdevelopment")

В этом примере marketing используется имя схемы и productdevelopment имя таблицы.

Обозреватель Lakehouse можно использовать для упорядочивания таблиц и перетаскивания имен таблиц в разные схемы.

Анимация перемещения таблиц между схемами.

Внимание

При перемещении таблицы в другую схему или переименовании ее необходимо также обновить элементы, ссылающиеся на таблицу( например, код записной книжки, потоки данных и запросы SQL), чтобы использовать новую схему или имя таблицы.

Добавление нескольких таблиц с ярлыком схемы

Ярлык схемы создает новую схему в lakehouse, которая ссылается на разностные таблицы из другого озера Fabric или из внешнего хранилища, например Azure Data Lake Storage (ADLS) 2-го поколения. Вы также можете добавить локальные таблицы в ту же схему вместе с таблицами-ярлыками. Изменения таблиц в исходном расположении автоматически отражаются в схеме.

Чтобы создать ярлык схемы, выполните следующие действия.

  1. В области обозревателя lakehouse наведите указатель мыши на таблицы, выберите ..., а затем нажмите кнопку "Создать ярлык схемы".

    Снимок экрана: новый ярлык схемы Lakehouse.

  2. Выберите источник: схему в другом лейкхаусе Fabric или папку, содержащую таблицы Delta во внешнем хранилище данных, например Azure Data Lake Storage (ADLS) поколения 2.

В вашем озерном доме появится новая схема с всеми упомянутыми таблицами из источника.

Доступ к схемам Lakehouse для отчетов Power BI

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

Схемы Lakehouse в ноутбуке

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

Используйте четырехсоставное пространство имен, чтобы ссылаться на таблицы в коде: workspace.lakehouse.schema.table. Если вы опустите любую часть пространства имен, Spark разрешит её с помощью значений по умолчанию — например, простое имя таблицы разрешается в схему dbo для озера-хранилища данных по умолчанию.

Внимание

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

Запросы SQL Spark для работы между разными рабочими областями

Озера данных с поддержкой схемы позволяют выполнять запросы и объединение таблиц в различных рабочих областях в едином SQL-запросе Spark. Используйте четырехчастное пространство имен workspace.lakehouse.schema.table, чтобы обращаться к любой таблице, к которой у текущего пользователя есть разрешение на доступ.

-- workspace.lakehouse.schema.table
SELECT * 
    FROM ops_workspace.hr_lakehouse.hrm.employees AS employees 
    INNER JOIN global_workspace.corporate_lakehouse.company.departments AS departments
    ON employees.deptno = departments.deptno;

Упоминание lakehouses без схемы

Если вы работаете с озерами с поддержкой схемы и не схемой, вы можете запрашивать и присоединять оба типа в одном коде SQL Spark. Ссылки на таблицы lakehouse, которые не принадлежат конкретной схеме, должны быть указаны либо как lakehouse.table, либо как workspace.lakehouse.table для выполнения запросов между рабочими областями.

-- Schema-enabled: workspace.lakehouse.schema.table
-- Non-schema:     workspace.lakehouse.table
SELECT * 
    FROM my_workspace.sales_lakehouse.retail.orders AS schema_table 
    INNER JOIN my_workspace.legacy_lakehouse.customers AS nonschema_table
    ON schema_table.customer_id = nonschema_table.id;

Чтобы подготовиться к будущей миграции на схемы, вы можете начать использовать четырехчастное именование для лейкхаусов без схем уже сегодня, например dbo. Spark принимает этот синтаксис, даже если dbo схема еще не существует в не-схеме lakehouse. Дополнительные сведения см. в разделе "Включение схем для существующих озерно-хранилищных систем".

Создание озера с схемами с помощью REST API

При создании озера с помощью REST API Create Lakehouse схемы по умолчанию не включены. Чтобы создать озеро с поддержкой схемы, включите "enableSchemas": true в следующее creationPayload:

POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses

{
  "displayName": "Lakehouse_created_with_schema",
  "description": "A schema enabled lakehouse.",
  "creationPayload": {
    "enableSchemas": true
  }
}

Чтобы перечислить таблицы, схемы или получить сведения о таблице, используйте API таблицы OneLake для Delta.

Включение схем для существующих озерных домов

Лейкхаусы, созданные до доступности схем, не имеют поддержки схем. Fabric продолжает поддерживать lakehouses без схемы, и Spark может запрашивать и соединять оба типа в одном коде. Средства миграции, которые преобразуют озеро данных без схемы в озеро данных с включенной поддержкой схемы без перемещения данных или простоя, пока недоступны.

В то же время можно начать подготовку, используя систему именования на основе четырех компонентов (workspace.lakehouse.dbo.table) в существующем коде, даже для lakehouses без схем, чтобы запросы были готовы при включении схем. Для получения дополнительной информации см. Ссылки на лейкхаузы без схем.

Текущие ограничения

Озера с поддержкой схемы имеют следующие известные ограничения. В таблице также описываются обходные пути для каждого из них.

Ограничение Description Обходной путь
Совместные озерные дома В настоящее время невозможно предоставлять прямой общий доступ к лейкхаусу с поддержкой схем через общий доступ на уровне рабочей области. Создайте сочетания клавиш в lakehouse, где у пользователя есть роль рабочей области, и используйте ссылки на общие таблицы lakehouse через эти сочетания клавиш.
Внешние таблицы ADLS Метаданные внешней таблицы по Azure Data Lake Storage (ADLS) не поддерживаются непосредственно в озерах с поддержкой схемы. Используйте сочетания клавиш OneLake для ссылки на внешние таблицы Delta.