Регистрация событий в сигнальном топике Kafka
Содержание раздела
Система поддерживает регистрацию событий в сигнальном топике Kafka.
Сообщения записываются в топик, имя которого задано с помощью параметра конфигурации KAFKA_STATUS_EVENT_TOPIC, в JSON-формате. Каждое сообщение состоит из ключа и тела.
Рекомендуется настроить автоматическую очистку сигнального топика в конфигурации брокера Kafka.
Управление регистрацией событий
При необходимости можно отключить регистрацию следующих событий:
- завершение и отмена операций записи — запись сообщений отключается/включается параметром конфигурации
KAFKA_STATUS_EVENT_WRITE_OPERATIONS_ENABLED; - создание и удаление внешних таблиц в логической схеме данных — запись сообщений отключается/включается параметром конфигурации
KAFKA_STATUS_EVENT_EXTERNAL_DDL_ENABLED.
Формат ключа сообщения
Ключ сообщения в сигнальном топике Kafka имеет формат, показанный ниже. Описание параметров ключа сообщения см. в секции ниже.
{
"datamart": "<logical_db>",
"datetime": "<event_timestamp>",
"event": "<event_code>",
"eventLogId": "<event_UUID>"
}
Параметры ключа сообщения
logical_db-
Имя логической базы данных, в которой произошло событие.
event_timestamp-
Дата и время события в формате
YYYY-MM-DD hh:mm:ss[.microseconds]. Подробнее о формате см. в разделе Строковый формат даты и времени в ответах. event_code-
Код события. Возможные значения:
DATAMART_SCHEMA_CHANGED— выполнение DDL-запроса (независимо от того, изменил запрос логическую схему данных или нет);DELTA_OPEN— открытие дельты;DELTA_CLOSE— закрытие дельты;DELTA_CANCEL— откат дельты;WRITE_OK— завершение операции записи;WRITE_CANCEL— отмена операции записи.
event_UUID-
Уникальный идентификатор события.
Примеры ключей сообщения
Пример ключа в сообщении о закрытии дельты:
{
"datamart": "marketing",
"datetime": "2024-02-28 08:02:40.463",
"event": "DELTA_CLOSE",
"eventLogId": "6b80c392-3198-492f-a631-6a684e521b79"
}
Пример ключа в сообщении о завершении операции записи:
{
"datamart": "marketing",
"datetime": "2024-02-28 09:15:43.532",
"event": "WRITE_OK",
"eventLogId": "8b8dfa17-6605-4874-8ebf-1b8b47c201f3"
}
Пример ключа в сообщении об отмене операции записи:
{
"datamart": "marketing",
"datetime": "2024-02-28 09:51:11.148",
"event": "WRITE_CANCEL",
"eventLogId": "3d963cbc-8782-498e-923d-602d7ccf7c2d"
}
Формат тела сообщения
Тело сообщения в сигнальном топике Kafka имеет формат, описанный в таблице ниже. Описание параметров тела сообщения см. в секции ниже.
| Событие | Формат тела сообщения |
|---|---|
| Выполнение DDL-запроса | {"datamart": "<logical_db>", "entityName": "<entity_name>", "entityDefinition": "<entity_definition>", changeDateTime": "<ddl_timestamp>"} |
| Открытие дельты | {"deltaNum": <delta_number>} |
| Закрытие дельты | {"deltaNum": <delta_number>, "deltaDate": "<delta_commit_timestamp>"} |
| Откат дельты | {"deltaNum": <delta_number>} |
| Завершение операции записи | {"entity": "<entity_name>", "cn": <sys_cn>, "ts": <ts_unix_time>, "rowsAffected": <rows_affected_quantity>} |
| Отмена операции записи | {"entity": "<entity_name>", "cn": <sys_cn>} |
Параметры тела сообщения
logical_db-
Имя логической базы данных, в которой выполнен DDL-запрос.
entity_name-
Имя логической сущности, к которой относится DDL-запрос или операция записи.
entity_definition-
Определение логической сущности. Возможные значения:
TABLE.DEFAULT— обычная логическая таблица;TABLE.PROXY— прокси-таблица;TABLE.PARTITION— партиция;TABLE.PARTITIONED— партиционированная таблица;MATERIALIZED VIEW.DEFAULT— материализованное представление;VIEW.DEFAULT— обычное логическое представление (не относящее к категории простых*);VIEW.PLAIN.FILTERED— простое* представление с условием;VIEW.PLAIN.UNFILTERED— простое* представление без условия;READABLE EXTERNAL TABLE.CORE:<datasource_name>— readable-таблица для работы со standalone-таблицей, расположенной в датасорсе<datasource_name>;READABLE EXTERNAL TABLE.KAFKA— readable-таблица для загрузки данных из брокера сообщений Kafka;WRITABLE EXTERNAL TABLE.CORE:<datasource_name>— writable-таблица для работы со standalone-таблицей, расположенной в датасорсе<datasource_name>;UPLOAD EXTERNAL TABLE.KAFKA— внешняя таблица загрузки;DOWNLOAD EXTERNAL TABLE.KAFKA— внешняя таблица выгрузки.
* Простое логическое представление — представление, основанное на запросе к одной таблице и принадлежащее той же логической базе данных, что и таблица. Такое представление может включать условие без подзапросов и соединений.
ddl_timestamp-
Дата и время выполнения DDL-запроса в формате
YYYY-MM-DD hh:mm:ss[.microseconds]. Подробнее о формате см. в разделе Строковый формат даты и времени в ответах. delta_number-
Номер дельты.
delta_commit_timestamp-
Дата и время закрытия дельты в формате
YYYY-MM-DD hh:mm:ss[.microseconds]. Подробнее о формате см. в разделе Строковый формат даты и времени в ответах. sys_cn-
Номер операции записи. Для прокси-таблиц и standalone-таблиц указывается значение
null. ts_unix_time-
Дата и время выполнения или отмены операции записи в Unix-формате, равное целому числу микросекунд с 00:00:00 UTC 1 января 1970 года. Для прокси-таблиц и standalone-таблиц указывается значение
null. rows_affected_quantity-
Количество добавленных, измененных и удаленных операцией строк.
Примеры тела сообщения
Пример тела сообщения с информацией о выполнении DDL-запроса:
{
"changeDateTime": "2024-04-24 15:25:47.002",
"datamart": "marketing"
}
Пример тела сообщения с информацией о закрытии дельты:
{
"deltaNum": 8,
"deltaDate": "2024-04-28 08:02:40"
}