TRUNCATE HISTORY

Содержание раздела
  1. Синтаксис
  2. Ограничения
  3. Пример

Запрос позволяет удалить актуальные записи логической таблицы с историей или только историю изменений. Данные выбираются по условию, указанному в блоке запроса WHERE. Данные удаляются окончательно и не подлежат восстановлению средствами системы.

Запрос поддерживает два режима работы:

  • если в запросе указан момент (метка) времени, удаляется только история — архивные записи таблицы, которые соответствуют условию и стали архивными до последней закрытой на тот момент дельты (включительно);
  • если в запросе указано ключевое слово infinite, удаляются записи с историей — архивные и актуальные записи таблицы, которые соответствуют условию.

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

  • пустой объект ResultSet при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

Удаление данных с помощью TRUNCATE HISTORY не версионируется системой и не записывается в журнал. Данные, удаленные таким образом, невозможно восстановить средствами системы.

На рисунке ниже показан пример удаления истории изменений из таблицы, в которую в течение года было добавлено три версии записи по одной торговой точке. Запрос с меткой времени '2021-04-10 01:00:00' удаляет первую версию записи: на тот момент времени последней закрытой дельтой была дельта со второй версией записи и только первая версия записи была архивной.

Удаление истории изменений старше 2021-04-10 01:00:00

Синтаксис

TRUNCATE HISTORY [db_name.]table_name FOR SYSTEM_TIME AS OF date_time_expression
[WHERE filter_expression]

Параметры:

  • db_name — имя логической базы данных. Опционально, если выбрана логическая БД, используемая по умолчанию;
  • table_name — имя логической таблицы, данные которой удаляются;
  • date_time_expression — выражение, определяющее категорию удаляемых данных. Может принимать следующие значения:
    • 'YYYY-MM-DD hh:mm:ss' — удаление истории старше указанного момента времени. Возможные форматы см. в разделе Форматы даты и времени;
    • 'infinite' — удаление записей с историей;
  • filter_expression — условие выбора удаляемых данных.

Ограничения

Выполнение запроса недоступно в сервисной базе данных INFORMATION_SCHEMA.

Пример

Удаление истории изменений тех записей, чье значение product_units меньше 10, из таблицы sales по момент времени '2019-12-23 15:15:14':

TRUNCATE HISTORY marketing.sales FOR SYSTEM_TIME AS OF '2019-12-23 15:15:14'
WHERE product_units < 10

Удаление записей, чье значение id равно 123456, с историей изменений из таблицы stores:

TRUNCATE HISTORY marketing.stores FOR SYSTEM_TIME AS OF 'infinite'
WHERE id = 123456