Требования к целевой зоне и формат открытого зеркального отображения
В этой статье описываются требования к зоне посадки и операции с таблицами или столбцами для открытого зеркального отображения в Microsoft Fabric.
Внимание
Эта функция доступна в предварительной версии.
После создания открытой зеркальной базы данных с помощью портала Fabric или общедоступного API в рабочей области Fabric вы получите URL-адрес целевой зоны в OneLake на домашней странице зеркального элемента базы данных. Эта зона выгрузки предназначена для вашего приложения, чтобы создавать файл метаданных и размещать данные в формате Parquet (в несжатом виде или с использованием сжатия Snappy, GZIP, ZSTD).
Зона приземления
Для каждой зеркальной базы данных существует уникальное расположение хранилища в 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 дней файлы удаляются из этой папки.