TRUNCATE HISTORY
Содержание раздела
Запрос позволяет удалить актуальные записи логической таблицы с историей или только историю изменений. Данные выбираются по условию, указанному в блоке запроса WHERE
. Данные удаляются окончательно и не подлежат восстановлению средствами системы.
Запрос поддерживает два режима работы:
- если в запросе указан момент (метка) времени, удаляется только история — архивные записи таблицы, которые соответствуют условию и стали архивными до последней закрытой на тот момент дельты (включительно);
- если в запросе указано ключевое слово
infinite
, удаляются записи с историей — архивные и актуальные записи таблицы, которые соответствуют условию.
В ответе возвращается:
- пустой объект ResultSet при успешном выполнении запроса;
- исключение при неуспешном выполнении запроса.
Удаление данных с помощью TRUNCATE HISTORY
не версионируется системой и не записывается в журнал. Данные, удаленные таким образом, невозможно восстановить средствами системы.
На рисунке ниже показан пример удаления истории изменений из таблицы, в которую в течение года было добавлено три версии записи по одной торговой точке. Запрос с меткой времени '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
-
Условие выбора удаляемых данных.
Ограничения
- Блок 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