Регистрация событий в сигнальном топике 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
— материализованное представление, построенное на данных логических БД;MATERIALIZED VIEW.EXEC.AGENT
— материализованное представление, построенное на данных внешнего источника;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"
}