TRUNCATE HISTORY

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

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

Запрос не поддерживает удаление данных из материализованных представлений.

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

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

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

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

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

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

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

Чтобы удалить актуальные и архивные данные, начиная с указанного момента времени, используйте запрос TRUNCATE ACTUAL.

Синтаксис

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

Условие выбора удаляемых данных.

Ограничения

  • Удаление данных происходит вне механизма дельт и не может быть отменено.
  • Условие WHERE не может содержать подзапросы, соединения и другие операции. Поддерживается только plain-условие.
  • Запрос не может быть выполнен в сервисной базе данных 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