Skip to main content Link Menu Expand (external link) Document Search Copy Copied

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

TRUNCATE HISTORY

Содержание раздела
  1. Синтаксис
    1. Ключевое слово FOR SYSTEM_TIME AS OF
    2. Ключевое слово WHERE
  2. Ограничения
  3. Примеры
    1. Удаление неактуальных изменений
    2. Удаление всех изменений

Поддерживается в версиях:  6.1 / 6.0 / 5.8 / 5.7 / 5.6.1 / 5.5 / 5.4 / 5.3 / 5.2 / 5.1 / 5.0.

Запрос удаляет:

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

Изменения к удалению выбираются по условию в блоке WHERE. Условие может быть любым plain-выражением.

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

Если в запросе указана метка времени, система определяет последнюю закрытую на этот момент дельту и удаляет изменения, которые стали неактуальными в этой дельте и ранее.

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

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

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

Удаление изменений, неактуальных на 2021-04-10 00:00:10

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

Другие способы управления историей см. в разделе Управление историей изменений данных

Синтаксис

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

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

Ключевое слово FOR SYSTEM_TIME AS OF

Ключевое слово FOR SYSTEM_TIME AS OF задает момент времени, до которого удаляются изменения. См. также параметр date_time_expression.

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

Ключевое слово WHERE задает условие выбора удаляемых изменений.

Ограничения

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

Примеры

Удаление неактуальных изменений

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

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