Блок 2 курса по Optimacros: Работа со скриптами в системе Optimacros
Скрипты в системе Optimacros представляют собой программируемые блоки, предназначенные для автоматизации вычислений, трансформации данных, взаимодействия между компонентами модели, а также интеграции с внешними источниками и системами. Правильное использование скриптов позволяет значительно расширить функциональные возможности модели, ускорить процессы расчета, обеспечить гибкость в планировании и интеграции.
Данный модуль содержит подробное описание принципов работы со скриптами, классификацию, примеры, архитектурные схемы взаимодействия, рекомендации по проектированию, а также задания и тесты для закрепления материала.
1. Назначение и роль скриптов
Скрипты в Optimacros используются в следующих целях:
- Автоматизация расчётных процедур и подготовки данных внутри модели.
- Управление взаимодействием между мультикубами и пользовательскими интерфейсами.
- Вызов внешних источников данных (DWH, API, Excel и др.).
- Интеграция между моделями, пакетами и сквозными бизнес-процессами.
- Обработка пользовательских действий (нажатие кнопок, переключение сценариев, дашборды).
Скрипт может быть вызван вручную, по триггеру, по расписанию или при запуске конкретного пользовательского процесса (например, расчета плана, загрузки данных или пересчета сценария).
2. Виды скриптов в Optimacros
2.1 Внутримодельные скрипты
Используются для операций внутри одной модели. Основные задачи:
- Запись, копирование, агрегация данных между мультикубами.
- Расчет промежуточных и итоговых показателей.
- Очистка, фильтрация, нормализация данных.
Пример: копирование значений из мультикуба "Факт_Продажи" в мультикуб "Факт_Корректировка" с фильтрацией по атрибуту "Регион = Москва".
2.2 Интеграционные скрипты
Обеспечивают подключение к внешним источникам и обмен данными:
- Импорт и экспорт данных (Excel, CSV, API, SQL, SOAP, REST).
- Интеграция с DWH, ERP, CRM, BI-системами.
- Обогащение модели данными из внешних справочников.
Пример: загрузка остатков товаров по SKU с SQL-сервера в мультикуб "Остатки_Склады".
2.3 Скрипты интерфейса
Обслуживают кнопки, фильтры, переключатели на дашбордах:
- Запуск расчета после выбора сценария.
- Сброс фильтров, активация view, обновление таблицы.
Пример: при нажатии кнопки "Рассчитать" запускается цепочка из 3 скриптов: очистка, расчет, запись результатов.
2.4 Скрипты публикации
Используются для создания и рассылки отчетов:
- Экспорт в Excel, PDF.
- Отправка писем с приложением отчета.
Пример: генерация плана продаж по SKU с детализацией по регионам и отправка файла в email директора филиала.
3. Архитектура и ядра скриптов
В системе реализованы различные "ядра" исполнения скриптов:
- Script:Json — основной тип скрипта, задается в формате JSON, включает описание входных и выходных мультикубов, фильтров, условий, действий.
- Script:Sql — обращение к внешней SQL-базе данных.
- Script:Python — поддержка выполнения Python-логики (например, для API-запросов, ML-моделей).
- Script:Rest / Script:Http — для вызова REST-сервисов.
- Script:Shell — вызов shell-скриптов (в on-premise установках).
Каждое ядро требует своей настройки параметров, прав доступа и окружения выполнения.
4. Работа с View мультикуба
Для корректной работы скриптов часто требуется view мультикуба — представление, ограниченное по фильтрам, сценариям, с включением только нужных показателей или измерений.
Пример:
{
"cube": "Продажи",
"view": {
"dimensions": ["Регион", "Месяц"],
"indicators": ["Прогноз"],
"filter": {"Сценарий": "Базовый"}
}
}
View позволяет сократить объем обрабатываемых данных и избежать лишней нагрузки при запуске скрипта.
5. Сценарии использования и типовые паттерны
- Цепочка скриптов: очистка -> загрузка -> расчет -> запись результата.
- Интерактивный вызов: кнопка "Рассчитать план" вызывает последовательность из 5 шагов.
- Интеграция с BI: скрипт выгружает плановые данные в таблицу и триггерит API Tableau.
- Ручной запуск: моделлер вручную вызывает скрипт "Сравнить сценарии" для анализа отклонений.
6. Рекомендации по проектированию
- Минимизируйте объем данных, обрабатываемых в одном скрипте — используйте фильтры и view.
- Выносите повторяющуюся логику в библиотеки скриптов.
- Стандартизируйте имена скриптов, логируйте ошибки, фиксируйте дату/пользователя запуска.
- Используйте шаблоны и re-use: часть логики можно использовать в разных моделях с параметризацией.
- Регулярно проводите ревизию скриптов: неиспользуемые — удаляйте.
7. Ошибки и отладка
- Cube not found — указано неверное имя мультикуба.
- Permission denied — нет доступа у пользователя к измерению/кубу.
- Invalid view — некорректная структура фильтра или индикатора.
- External service failed — ошибка при вызове API, SQL или Shell.
Используйте лог-центр системы и параметры отладки скриптов для диагностики.
8. Задания и тесты
Задание 1.
Напишите скрипт копирования данных между мультикубами с фильтрацией по региону и сценарию.
Задание 2.
Создайте скрипт импорта остатков из Excel-файла с учетом структуры справочника SKU.
Тест:
- Какие типы скриптов используются для интеграции?
- Чем отличается Script:Json от Script:Rest?
- Какие действия необходимы для отладки ошибки "invalid view"?



