TRUNCATE HISTORY

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

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

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

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

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

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

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

Удаленные данные не подлежат восстановлению средствами системы.

На рисунке ниже показан пример работы запроса с указанным моментом времени. В примере есть три версии записи по одной торговой точке, загруженные в различные периоды года. В результате исполнения запроса с меткой времени '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.

Пример

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

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

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

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