Описание метода

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

Для удаления записей из мультисферы используется метод cleanup_multisphere_data:

cleanup_multisphere_data(cube_name: str, dimension_name: str,
sql_params: dict, is_update: bool = True) -> dict:

В методе используются следующие аргументы:

АргументОписание
 cube_name: (str)Название обновляемой мультисферы.
dimension_name: (str)Название размерности, среди элементов которой производится поиск значений, полученных в результате SQL-запроса. 
sql_params: (dict)Параметр для обращения к источнику данных с помощью SQL-запроса с целью получения данных о записях, подлежащих удалению из мультисферы.
is_update: (bool)Запустить обновление мультисферы после удаления записей. По умолчанию True.

В словарь sql_params передаются поля:

ПолеОписание
query

SQL-запрос, который необходимо выполнить на сервере, для получения данных о записях к удалению.

Запрос должен иметь следующий вид:

SELECT <Название столбца с записями, подлежащими удалению> FROM <Название таблицы, содержащей информацию о записях к удалению>.

Для ускорения процесса удаления нужно, чтобы значения полученного столбца были уникальными. В таком случае рекомендуется использовать SQL-запрос вида:

SELECT DISTINCT <Название столбца с записями, подлежащими удалению> FROM <Название таблицы, содержащей информацию о записях к удалению>.

Пример задания параметра sql_params:

sql_params = {
"query": "SELECT otdelname FROM public.tablefortest",
}

Если в SQL-запросе используется конкретное значение элемента размерности и размерность содержит строковые данные или даты, то название элемента следует заключать в одинарные кавычки:

"SELECT federal_district_name_cutted FROM public.Известкование WHERE federal_district_name_cutted = 'ЮФО';"

Если имя столбца написано на кириллице, оно заключается в двойные кавычки с экранированием:

"SELECT \"Клиент_Компания\" FROM public.bi_orders_details WHERE \"Клиент_Компания\" = 'ВАРП АГ'"

В результате использования метода в ответе возвращается словарь (dict) — результат команды ("user_cube", "cleanup_rp").

Пример ответа:

{'state': 1,
  'queries': [{'uuid': 'e4fa8232-fc89510e-67c4360c-d5303d2b',
    'command': {'plm_type_code': 208, 'state': 59}}]}

В следующих случаях возвращается ошибка:

  1. Мультисфера создана на основе файлового источника.
  2. В мультисфере содержится более одного источника данных.
  3. SQL-запрос содержит более одного столбца.
  4. В мультисфере нет указанной размерности.
  • Нет меток