Описание метода
Для мультисфер, созданных на основе баз данных и имеющих при этом только один источник данных, доступно удаление записей, которые были удалены в источнике. Такое удаление выполняется быстрее, чем удаление при обновлении мультисферы. Для применения этого функционала необходимо, чтобы на уровне базы данных была подготовлена отдельная таблица с информацией о том, какие записи нужно удалить из мультисферы.
Для удаления записей из мультисферы используется метод 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}}]}
В следующих случаях возвращается ошибка:
- Мультисфера создана на основе файлового источника.
- В мультисфере содержится более одного источника данных.
- SQL-запрос содержит более одного столбца.
- В мультисфере нет указанной размерности.