Удаление данных

Содержание раздела
  1. Предварительный шаг для standalone-таблиц
  2. Как удалить данные
  3. Примеры
    1. Удаление данных логических таблиц
    2. Удаление данных прокси-таблиц
    3. Удаление данных standalone-таблиц
    4. Перезапуск операций по удалению данных

Система позволяет удалять небольшие объемы данных в следующих логических сущностях:

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

Предварительный шаг для standalone-таблиц

Удаление данных в standalone-таблице выполняется с помощью внешней writable-таблицы. Если она отсутствует, ее необходимо создать.

Чтобы создать внешнюю writable-таблицу, выполните запрос CREATE WRITABLE EXTERNAL TABLE:

  • если standalone-таблица отсутствует и ее нужно создать при создании внешней таблицы, укажите в запросе ключевое слово OPTIONS со значением auto.create.table.enable=true;
  • иначе выполните запрос без ключевого слова OPTIONS.

Как удалить данные

Чтобы удалить данные:

  1. Если необходимо включить изменения данных логической таблицы в дельту и в логической БД нет открытой дельты, откройте новую дельту.
  2. Выполните запрос DELETE:
    • чтобы выполнить запрос в синхронном режиме, используйте любой из способов:
      • отправьте запрос по JDBC,
      • отправьте запрос по HTTP с помощью POST-метода query без параметра async или с параметром async, имеющим значение false;
    • чтобы выполнить запрос в асинхронном режиме, отправьте его по HTTP с помощью POST-метода query с параметром async, имеющим значение true.
  3. Если изменения были выполнены в дельте и они должны быть последними в дельте, закройте дельту.

При удалении данных в прокси-таблицах и standalone-таблицах учитывайте ограничения таблиц целевой СУБД.

Примеры

Удаление данных логических таблиц

-- выбор логической базы данных marketing в качестве базы данных по умолчанию
USE marketing;

-- открытие новой дельты
BEGIN DELTA;

-- удаление записей логической таблицы sales в дельте
DELETE FROM sales WHERE store_id = 234;

-- закрытие дельты
COMMIT DELTA;

Удаление данных прокси-таблиц

-- удаление одной записи прокси-таблицы       
DELETE FROM marketing.payments_proxy WHERE id = 100       

Удаление данных standalone-таблиц

-- удаление записей по одному клиенту
DELETE FROM marketing.agreements_ext_write_adp WHERE client_id = 234     

Перезапуск операций по удалению данных

-- выбор логической базы данных marketing_new в качестве базы данных по умолчанию
USE marketing;

-- открытие новой дельты
BEGIN DELTA;

-- удаление записей логической таблицы sales о покупках в магазине
DELETE FROM sales WHERE store_id = 456;

-- перезапуск обработки операции по удалению записей
RETRY DELETE FROM sales WHERE store_id = 456;

-- закрытие дельты
COMMIT DELTA;