Преобразование выходных данных DeltaFlow (предварительная версия)

DeltaFlow — это возможность в потоках событий Fabric, которая преобразует необработанные события записи измененных данных (CDC) в неструктурированный, готовый к аналитике формат. Вместо работы с глубоко вложенными полезными данными Debezium JSON вы получаете табличные строки, которые внимательно отражают структуру таблиц исходной базы данных, обогащенные столбцами метаданных, описывающими каждое изменение.

В этой статье описывается процесс преобразования, столбцы метаданных, которые DeltaFlow добавляет, и как в выходных данных представлены различные типы операций (вставки, обновления и удаления).

Структура событий Raw Debezium CDC

Соединители CDC, управляемые Debezium, выдают события изменения в виде конвертов JSON. Обычное необработанное событие содержит вложенные структуры, включая данные строки до и после изменения, исходные метаданные и тип операции:

{
  "before": null,
  "after": {
    "OrderID": 1001,
    "CustomerName": "Contoso Ltd",
    "OrderTotal": 249.99,
    "OrderDate": "2026-03-01"
  },
  "source": {
    "version": "2.x",
    "connector": "sqlserver",
    "name": "fabsql",
    "ts_ms": 1741305600000,
    "db": "SalesDB",
    "schema": "dbo",
    "table": "Orders"
  },
  "op": "c",
  "ts_ms": 1741305600123
}

Для этого вложенного формата требуется синтаксический анализ и извлечение, прежде чем выполнять запросы аналитики, например для доступа OrderTotal, необходимо перейти к объекту after и извлечь его. Запросы к этому формату напрямую с помощью KQL или SQL являются сложными и подвержены ошибкам.

Преобразованные выходные данные DeltaFlow

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

Идентификатор заказа ИмяКлиента Общая сумма заказа Дата заказа __dbz_operation __dbz_timestamp __dbz_server __dbz_schema __dbz_table
1001 Contoso Ltd 249.99 2026-03-01 Вставить 2026-03-07T00:00:00Z fabsql dbo Заказы

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

Столбцы метаданных

DeltaFlow добавляет следующие столбцы метаданных в каждую выходную строку:

колонна Описание
__dbz_operation Тип операции изменения. Допустимые значения: Insert, , DeletePre_UpdatePost_Update.
__dbz_timestamp Метка времени, когда событие изменения было зафиксировано.
__dbz_server Логическое имя исходного сервера базы данных, настроенного в соединителе CDC.
__dbz_schema Имя схемы исходной таблицы (например, dbo, public).
__dbz_table Имя исходной таблицы, в которой произошло изменение.

Типы операций

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

Операция Значение __dbz_operation При возникновении
Вставка Insert При вставке новой строки в исходную таблицу или на этапе создания начального моментального снимка, когда коннектор записывает существующие строки.
Update Pre_Update и Post_Update. На этапе потоковой передачи при изменении существующей строки. DeltaFlow выдает две строки для каждого обновления — один представляет состояние строки до изменения и один после.
Удалить Delete Во время потоковой передачи, когда строка удаляется из исходной таблицы.

Начальный снимок состояния

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

Идентификатор заказа ИмяКлиента Общая сумма заказа Дата заказа __dbz_operation __dbz_timestamp
1001 Contoso Ltd 249.99 2026-03-01 Вставить 2026-03-07T00:00:00Z
1002 Fabrikam Inc 150,00 2026-03-02 Вставить 2026-03-07T00:00:00Z

После завершения моментального снимка соединитель переключается в режим потоковой передачи и записывает текущие изменения.

Вставить

При добавлении новой строки в исходную таблицу DeltaFlow выдает одну строку с операцией Insert:

Идентификатор заказа ИмяКлиента СуммаЗаказа Дата заказа __dbz_operation __dbz_timestamp
1003 Adventure Works 75.50 2026-03-08 Вставить 2026-03-08T14:30:00Z

Обновление

При изменении существующей строки DeltaFlow выдает две строки с одинаковыми метками времени — один для состояния до изменения (Pre_Update) и один для состояния после (Post_Update). Этот шаблон похож на потоки данных с изменениями Delta:

Идентификатор заказа ИмяКлиента Сумма заказа Дата заказа __dbz_operation __dbz_timestamp
1001 Contoso Ltd 249.99 2026-03-01 Предобновление 2026-03-09T09:15:00Z
1001 Contoso Ltd 299.99 2026-03-01 Обновление_Записи 2026-03-09T09:15:00Z

В этом примере изменено OrderTotal с 249.99 на 299.99. Сохраняются как начальное, так и конечное состояние, что позволяет вычислять диффы, отслеживать изменения на уровне поля или создавать аудиторский след.

Удалить

При удалении строки из исходной таблицы DeltaFlow выдает одну строку с операцией Delete, содержащую последние известные значения строки:

Идентификатор заказа ИмяКлиента Общая сумма заказа Дата заказа __dbz_operation __dbz_timestamp
1002 Fabrikam Inc 150,00 2026-03-02 Удалить 09.03.2026 13:00:00 MSK

Сопоставление схемы и назначения таблицы

При маршрутизации потока с поддержкой DeltaFlow в поддерживаемое место назначения, например в хранилище событий, DeltaFlow автоматически:

  1. Создает целевые таблицы , соответствующие структуре исходной таблицы, со столбцами для каждого исходного столбца, а также пять столбцов метаданных.
  2. Управляет эволюцией схемы — при изменении исходных таблиц (например, добавляются столбцы или создаются новые таблицы), DeltaFlow обнаруживает изменения, обновляет зарегистрированные схемы и корректирует целевые таблицы соответствующим образом.

Дополнительные сведения об управлении таблицами конечных данных смотрите в разделе "Возможности DeltaFlow", который находится на каждой странице соединителя CDC.