Требования к целевой зоне и формат открытого зеркального отображения
В этой статье описаны требования к целевой зоне и операции таблицы или столбца для открытого зеркального отображения в 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
Значения:-
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 с новой схемой и данными.
Открытие зеркального отображения всегда объединяет все столбцы из предыдущей версии добавленных данных. Чтобы удалить столбец, создайте таблицу или папку.
Изменение типа столбца
Чтобы изменить тип столбца, удалите и повторно создайте папку с начальными и добавочными данными с новым типом столбца. Предоставление нового типа столбца без повторного создания таблицы приводит к ошибке, и репликация для этой таблицы остановится. После повторного создания папки таблицы репликация возобновляется с новыми данными и схемой.
Переименование столбца
Чтобы переименовать столбец, удалите папку таблицы и создайте папку со всеми данными и новым именем столбца.