COMMIT DELTA

Содержание раздела
  1. Действия перед запросом
  2. Синтаксис
    1. Ключевое слово IMMEDIATE
    2. Ключевое слово SET 'YYYY-MM-DD hh:mm:ss[.SSSSSS]'
  3. Варианты ответа
    1. Параметры ответа
  4. Ограничения
  5. Пример

Поддерживается в версиях: 7.6 / 7.5 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.12 / 6.11 / 6.10 / 6.9 / 6.8 / 6.7 / 6.6 / 6.5 / 6.4 / 6.3 / 6.2 / 6.1 / 6.0 / 5.8 / 5.7 / 5.6 / 5.5 / 5.4 / 5.3 / 5.2 / 5.1 / 5.0.

Запрос закрывает открытую дельту и делает ее недоступной для новых операций записи.

В запросе можно указать дату и время закрытия дельты.

По умолчанию запрос закрывает дельту, только если завершены все операции записи в логических таблицах логической БД. Если нужно закрыть дельту, не дожидаясь завершения операций, укажите в запросе ключевое слово IMMEDIATE.

Действия перед запросом

Перед выполнением запроса выберите логическую базу данных, используемую по умолчанию, если она еще не выбрана.

Синтаксис

COMMIT DELTA [IMMEDIATE] [SET 'YYYY-MM-DD hh:mm:ss[.SSSSSS]']

Ключевое слово IMMEDIATE

Позволяет закрыть дельту с уже завершенными операциями записи, не дожидаясь завершения остальных. Применяется только к операциям в логических таблицах — операции в снапшот-таблицах всегда выполняются вне механизма дельт и не мешают закрытию дельты.

Если ключевое слово указано, дельта закрывается даже при наличии незавершенных операций. Незавершенные операции исключаются из дельты и становятся отдельными операциями со своими метками времени (см. пример на рисунке ниже).

COMMIT DELTA IMMEDIATE исключает незавершенную операцию из дельты

Если ключевое слово отсутствует, дельта закрывается, только если все операции записи завершены. При наличии незавершенных операций возвращается ошибка.

Наличие незавершенных операций можно проверить с помощью GET_WRITE_OPERATIONS.
Об управлении незавершенными операциями см. в разделе Управление операциями записи.

Ключевое слово SET 'YYYY-MM-DD hh:mm:ss[.SSSSSS]'

Задает дату и время закрытия дельты в формате YYYY-MM-DD hh:mm:ss[.SSSSSS] с выбранной точностью.

Значение:

  • должно превышать дату и время закрытия последней дельты в логической БД;
  • может быть меньше меток времени операций записи, выполненных после последней закрытой дельты.

Если ключевое слово не указано, система устанавливает в качестве метки времени дельты текущее время сервера в формате YYYY-MM-DD hh:mm:ss.SSSSSS.

Варианты ответа

В ответе возвращается:

  • объект ResultSet c одной записью, содержащей информацию о дельте, при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

Параметры ответа

Успешный ответ содержит параметры:

  • delta_num — номер дельты;
  • delta_date — дата и время закрытия дельты в формате YYYY-MM-DD hh:mm:ss.SSSSSS;
  • cn_from — операция записи, с которой началась дельта.

Ограничения

  • Если в запросе указаны дата и время закрытия дельты, они должны быть больше даты и времени последней закрытой дельты в логической БД.
  • Закрытие дельты без ключевого слова IMMEDIATE доступно, только если завершены операции записи в логические таблицы и все операции по изменению схемы (включая DDL-операции по снапшот-таблицам).

Дату и время последней закрытой дельты можно узнать с помощью запроса GET_DELTA_OK или GET-метода /datamarts/{datamart}/deltas/latest/ok.

Пример

Закрытие дельты с указанной меткой времени и ожиданием завершения операций записи в логические таблицы:

USE marketing;

COMMIT DELTA SET '2023-08-21 09:29:54.324';

Закрытие дельты без указания метки времени и без ожидания незавершенных операций записи в логические таблицы:

USE marketing;

COMMIT DELTA IMMEDIATE;

Закрытие дельты с указанной меткой времени и без ожидания незавершенных операций записи в логические таблицы:

USE marketing;

COMMIT DELTA IMMEDIATE SET '2023-08-21 09:29:54';