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


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

В этой статье описываются требования к зоне посадки и операции с таблицами или столбцами для открытого зеркального отображения в 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 значения и поведение:

    RowMarker\Сценарий Если строка не существует с одними и теми же ключевыми столбцами в назначении Если строка существует с одинаковыми ключевыми столбцами в назначении
    0 (Вставка) Вставьте строку в место назначения Вставьте строку в пункт назначения без проверки дублирующего ключевого столбца.
    1 (обновление) Вставьте строку в место назначения, не проверяя наличие строки с таким же ключевым столбцом, без валидации или исключения. Обновите строку с одним и тем же ключевым столбцом.
    2 (удаление) Отсутствие изменения данных, отсутствует проверка или обработка исключений для проверки наличия строки с таким же ключевым столбцом. Удалите строку с таким же ключевым столбцом.
    4 (добавить или обновить) Вставьте строку в место назначения без проверки или обработки исключений для проверки существования строки с тем же ключевым столбцом. Обновите строку с одним и тем же ключевым столбцом.
  • Порядок строк: все журналы в файле должны быть в естественном порядке, как применяется в транзакции. Это важно для одной строки, обновляемой несколько раз. Открытое зеркалирование применяет изменения в соответствии с порядком в файлах.

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

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

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

Для начальной загрузки данных в открытую зеркальную базу данных rowMarker в исходном файле данных является необязательным и не рекомендуется. Зеркалирование обрабатывает весь файл как вставку, если rowMarker отсутствует.

Для повышения производительности и точной метрики rowMarker является обязательным полем только для добавочных изменений для применения операции update/delete/upsert.

Постепенные изменения

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

Изменения данных считаются добавочными изменениями после того, как столбец rowMarker найден из любой строки или файла.

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

Ниже приведены примеры данных Parquet из журнала истории строк для изменения EmployeeLocation на EmployeeID E0001 с 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 с новой схемой и данными.

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

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

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

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

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

Процесс очистки

Процедура очистки для выполнения зеркального копирования перемещает все обработанные файлы в отдельную папку с именем _ProcessedFiles или _FilesReadyToDelete. Через 7 дней файлы удаляются из этой папки.

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