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


Требования к целевой зоне и формат открытого зеркального отображения

В этой статье описаны требования к целевой зоне и операции таблицы или столбца для открытого зеркального отображения в Microsoft Fabric.

Внимание

Эта функция доступна в предварительной версии.

После создания открытой зеркальной базы данных с помощью портала Fabric или общедоступного API в рабочей области Fabric вы получите URL-адрес целевой зоны в OneLake на домашней странице зеркального элемента базы данных. Эта целевая зона позволяет приложению создать файл метаданных и данные земли в формате Parquet (несжатые, Snappy, GZIP, ZSTD).

Снимок экрана: портал Fabric, показывающий расположение URL-адреса целевой зоны на домашней странице зеркального элемента базы данных.

Целевая зона

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

Например, если в целевой зоне есть таблицы (Table A, Table B, ), Table Cсоздайте папки, такие как следующие URL-адреса:

  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/TableC

Файл метаданных в целевой зоне

Каждая папка таблицы должна содержать _metadata.json файл.

Этот файл метаданных таблицы содержит запись JSON, чтобы указать только уникальные ключевые столбцы как keyColumns.

Например, чтобы объявить столбцы C1 и C2 как составной уникальный ключ для таблицы:

{
   "keyColumns" : ["C1", "C2"]
}

Если keyColumns или _metadata.json не указано, обновление и удаление невозможно. Этот файл можно добавить в любое время, но после добавления keyColumns нельзя изменить.

Файл данных и формат в целевой зоне

Открытое зеркальное отображение поддерживает Parquet в качестве формата файла целевой зоны с сжатием или без нее. Поддерживаемые форматы сжатия включают Snappy, GZIP и ZSTD.

Все файлы Parquet, записанные в целевую зону, имеют следующий формат:

<RowMarker><DataColumns>

  • RowMarker: имя столбца ( __rowMarker__ включая два символа подчеркивания до и после rowMarker).

    • RowMaker Значения:
      • 0 для INSERT
      • 1 для UPDATE
      • 2 для DELETE
      • 4 для UPSERT
  • Порядок строк: все журналы в файле должны быть в естественном порядке, как применяется в транзакции. Это важно для одной строки, обновляемой несколько раз. Открытие зеркального отображения применяет изменения с помощью порядка в файлах.

  • Порядок файлов: файлы следует добавлять в монотонно увеличивающееся число.

  • Имя файла: 20 цифр, например 00000000000000000001.parquet для первого файла, а 00000000000000000002.parquet для второго — 20 цифр. Имена файлов должны находиться в непрерывных числах. Файлы будут удалены службой зеркального отображения автоматически, но последний файл будет оставлен, чтобы система издателя могли ссылаться на него, чтобы добавить следующий файл в последовательность.

Начальная загрузка

Для начальной загрузки данных в открытую зеркальную базу данных все строки должны иметь insert в качестве маркера строки. Без RowMarker данных в файле зеркальное отображение обрабатывает весь файл как INSERT.

Добавочные изменения

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

Обновленные строки должны содержать полные данные строки со всеми столбцами.

Ниже приведены примеры данных parquet журнала строк для изменения EmployeeLocation E0001 EmployeeID с Redmond на Bellevue. В этом сценарии EmployeeID столбец помечен как ключевой столбец в файле метаданных в целевой зоне.

__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Redmond
0,E0002,Redmond
0,E0003,Redmond
1,E0001,Bellevue

Если ключевые столбцы обновляются, то он должен быть представлен delete в предыдущих ключевых столбцах и строках INSERT с новым ключом и данными. Например, журнал строк для изменения уникального идентификатора RowMarker E0001 EmployeeID на E0002. Вам не нужно предоставлять все данные столбцов для строки DELETE, только ключевые столбцы.

__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Bellevue
2,E0001,NULL
0,E0002,Bellevue

Операции с таблицами

Открытие зеркального отображения поддерживает такие операции таблицы, как добавление, удаление и переименование таблиц.

Добавление таблицы

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

Удаление таблицы

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

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

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

Переименование таблицы

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

Схема

Путь к таблице можно указать в папке схемы. Целевая зона схемы должна иметь <schemaname>.schema имя папки. В схеме может быть несколько схем, и в схеме может быть несколько таблиц.

Например, если в целевой зоне есть схемы (Schema1, Schema2, ) и таблицы (Table A, Table B), Table Cсоздайте папки, такие как следующие пути в OneLake:

  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/Schema1.schema/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/Schema1.schema/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/Files/LandingZone/Schema2.schema/TableC

Столбцы таблиц и операции столбцов

Типы столбцов

  • Простые типы parquet поддерживаются в целевой зоне.
  • Сложные типы должны быть записаны как строка JSON.
  • Двоичные сложные типы, такие как география, изображения и т. д., могут храниться как двоичный тип в целевой зоне.

Добавление столбца

Если новые столбцы добавляются в файлы parquet, открытое зеркальное отображение добавляет столбцы в разностные таблицы.

Удалить столбец

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

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

Изменение типа столбца

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

Переименование столбца

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

Следующий шаг