Исходные данные кейса
- Производственная компания выполняющая сбыт своей продукции через дистрибьюторскую сеть
- Количество дистрибуторов - 47
- Канал сбора данных - электронная почта, B2B портал
- Формат сбора данных - Excel
- Среднее количество записей в файле с данными Sell-out за месяц (количество строк в Excel) - 10 000
- Доступная глубина исторических данных - 8 лет. Для построения прогноза. За 6 лет данные находятся в агрегированном формате в самописной БД, данные за 2022, год - 2023 года данные находятся в 1С
Что такое Sell-out
Sell-out (вторичные продажи) — это продажи от торговых посредников конечному потребителю.
Более подробно про Sell-out можно прочитать в статье.
Процесс построения прогноза
Построение прогноза продаж - это сквозной процесс который выглядит так:
- Загрузка исторических данных Sell-out в 1С
- Очистка данных
- Запись данных в 1С
- Подготовка данных для построения прогноза
- Передача данных для построения прогноза в Loginom
- Построение прогноза
- Получение результатов прогноза в 1С
Процесс построения прогноза
Сбор данных от дистрибуторов. Схема интеграционных потоков для сбора данных Sell-out в 1С
В современных ИТ-ландшафта производственных компаний организовать сбор данных Sell-Out можно различными способами. Остановимся на самых распространенных из них:
- Электронная почта один из самых распространенных и простых каналов для дистрибьютора. Выделен специальный почтовый адрес, на которой отправляются все отчеты, а система или человек выполняет обработку и консолидацию этих данных.
- Прямая передача данных через API. С текущей тенденцией импортозамещения очень актуальный сценарий т.к. у дистрибуторов, в большинстве случаев, также используются информационные системы на платформе 1С:Предприятие 8 и реализовать такую передачу данных в рамках готового API становится более реалистичным.
- WEB - портал производителя. Ресурс на котором ведутся коммуникации между дистрибьютором и производителем, удобен скоростью работы и визуальным отображением данных.
- FTP сервер. Один из консервативных вариантов автоматизированного получения данных в зависимости от запроса производителя или дистрибьютора.
Схема интеграционных потоков
В нашем кейсе сбор данных Sell-out осуществляется с помощью обработки входящих электронных писем с сложенными Excel файлами, а также с помощью получения данных Sell-out через B2B портал. При этом количество получаемых данных о вторичных продажах может быть значительным (50 000 строк), и в таком случае обработка и запись этих данных могут производиться неоправданно долго и тем самым затормозить работу аналитика. Для того, чтобы не допустить такого, нами была разработана проверка на лимит количества загружаемых строк в обрабатываемой таблице. Если объем данных от дистрибьютора превышает значение заданного лимита,, то обработка данных разбивается на 8 параллельных потоков, где каждый из потоков обрабатывает свою отдельную порцию информации, тем самым ускоряя процесс загрузки на порядок.
Очистка данных. Алгоритмы и сервисы очистки данных Sell-out
После сбора “грязных” данных мы выполняем их очистку в своей 1С с помощью специально разработанных алгоритмов и сторонних сервисов. Процесс очистки данных состоит из двух основных этапов.
- подготовительный - сопоставление структуры полученных данных со структурой хранения данных (в нашем кейсе со структурой хранения в 1С). Выполняется однократно для каждого дистрибьютора
- операционный - непосредственная очистка данных в рамках конкретного пакета (в нашем кейсе файла Excel) полученного от дистрибьютора. Выполняется ежемесячно в рамках действующего регламента сбора данных.
На подготовительном этапе для каждого дистрибьютора выполняется сопоставление представлений колонок в Excel файле с представлением этих колонок в 1С. Причем если структура данных Sell-out у дистрибутора поменяется то можно сделать новую настройку сопоставления при этом старую сделать неактивной.
Пример настройки синонима
Пример сопоставления структуры данных Sell-Out дистрибьютора со структурой с колонками в 1С
После того, как данные из файла Excel загружены в нужную структуру выполняется непосредственная очистка данных. Основная задача процесса очистки - это исправить опечатки, а также удалить неиспользуемые символы в названиях. Для этого была реализована интеграция с сервисом Dadata, с помощью которой происходит определение верного города по исходному значению. Данные хранятся в регистре и в дальнейшем при загрузке отчетов идет подстановка уже существующих значений. Если значение новое, то необходимо запустить сервис Dadata, который поставит правильный город. Такой подход сокращает трафик между 1С и сервисом и как следствие сокращает время на обработку данных.
Пример: Исходное значение города - “Масква”, после запуска сервиса Dadata получаем значение “Москва”.
Заполненные значения в регистре
Запись и хранение данных Sell-Out в 1С
Для хранения данных Sell-Out нами реализована полностью независимая структура регистров, которая может быть использована в любой конфигурации на платформе 1С:Предприятие.
Структура регистра данных Sell-Out
Аналитик компании производителя работает с документом “Отчет по Sell-Out”. Основными задачами при работе с документом являются:
- Проверять корректность обработки файла от дистрибьютора по статусу, указанному в документе.
- В случае ошибок обработки проверить и устранить их (ошибки хранятся в отдельных разделах).
Документ “Отчет по Sell-Out”
Подготовка данных для построения прогноза
Итак, данные Sell-Out получены, очищены и сохранены в информационной системе производителя. Теперь переходим к следующему шагу процесса - подготовка данных для построения прогноза. Основной задачей было получить прогнозное значение по продажам Sell-Out в разрезе регионов. Кратко опишем, какие данные были на входе:
- данные по продажам каждого дистрибьютора в каждом регионе с детализацией до номенклатуры;
- периодичность получения данных 1 месяц;
- рассматривали интервал с 2015 года по 2022 год.
Инструменты для прогнозирования продаж, которые используются в Loginom, имеют различные требования к данным, которые подаются на вход.
В данном кейсе мы выбрали модель ARIMA - модель авторегрессии скользящего среднего, которая применяется для построения краткосрочных прогнозов величины на основании её предыдущих значений. Согласно выбранной модели, определены требования к данным:
- Поля, которые будут использоваться в качестве входных или выходных, не должны содержать пустых значения (в нашем случае в отчетах были пустые поля по суммам продаж отдельных позиций);
- Данные, которые отвечают за отчетные периоды, должны быть типа “Дата и время” (если просто выгрузить файл из 1С, то все данные типа Строка);
- Данные по периодам на входе в модель должны быть уникальными (в нашем случае за один отчетный период может быть большое количество отчетов от разных дистрибьюторов в разных регионах и очевидно, что отчетный период у них совпадает).
Платформа Loginom содержит весь необходимый инструментарий для подготовки данных перед построением прогноза. Возникает вопрос какой из двух сценариев для подготовки данных целесообразно использовать, готовить данные на стороне Loginom или на стороне 1С? Поэтому далее рассмотрим каждый из двух сценариев
Процесс подготовки данных в Loginom
Процесс выглядит следующим образом:
Процесс подготовки данных в Loginom
Далее рассмотрим, что происходит на каждом шаге более детально:
1. Необходимо преобразовать тип данных для значений, отвечающих за отчетный период (тип данных можно менять для любых данных при необходимости. Можно также для этого использовать узел Параметры полей).
Мы это сделаем с помощью узла Калькулятор:
Преобразование типа данных для отчетного периода
2. Далее очищаем данные от пустых значений суммы (в нашем случае такие есть), так как это значение будет подавать как прогнозируемое в модель. Делаем это с помощью узла Фильтр строк:
Фильтрация строк с пустой суммой
3. Приводим к одному виду даты, заменяя дату на 1-ый день месяца в узле Дата и время:
Приводим дату к одному виду
4. Группируем данные по региону, дистрибьютору и отчетному периоду:
Группировка данных
5. Далее фильтруем данные по любому одному региону и дистрибьютору (для передачи уникального значения в модель для прогнозирования):
Группировка данных
На этом подготовка данных в Loginom для прогнозирования закончена.
Процесс подготовки данных в 1С
В рамках кейса, для подготовки данных для построения прогноза мы разработали модуль для 1С, который:
- Передает данные для построения прогноза в Loginom. (Подробно о настройке передачи данных мы расскажем в следующем разделе)
- Выполняет необходимые преобразования данных до их передачи в Loginom (часть вынесена на настройку пользователя, часть реализована в коде на языке платформы 1С:Предприятие):
- Изменение типа данных;
- Фильтрация пустых значений;
- Группировка;
- Передает данные в Loginom при помощи API
- Получает результаты прогноза и [хранит версии прогноза (Подробно о этой функциональности мы расскажем в разделе “Получение результатов прогноза в 1С”)
Модуль реализован в виде отдельного расширения которое может быть также использовано с различными конфигурациями 1С. Логика работы модуля реализована в формате мастера настройки, что дает пользователю понимание последовательности работы с подготовкой данных:
1.Настройка и проверка подключения к web-сервису прогнозирования в Loginom и проверка корректности введенных данных.
Настройка подключения
2.Выбор периода для анализа данных. А также проверить объем и состав отправляемой информации
Настройка параметров прогноза
3.На финальном этапе, когда подключение настроено, а данные для анализа выбраны, по кнопке Получить прогноз можно отправить данные для построения прогноза в Loginom.
В итоге можно из 1С сразу передать необходимые данные для построения прогноза без выгрузки файла и его настройки на стороне Loginom. А аналитику, который будет запускать обмен данных в 1С, нужно нажать всего лишь пару кнопок.
Запуск получения прогноза
Итак, сравнив как можно готовить данные для прогноза в Loginom и 1С, мы приняли решение разделять процесс построения прогноза на две части – подготовки данных и их непосредственного использования для построения прогноза. Такое разделение помогает упростить процесс – пропадает необходимость ручной выгрузки файла с данными Sell-Out и переноса его в Loginom, а также последующей передачи результатов прогноза обратно в 1С.
Настройка и передача данных для построения прогноза в Loginom
За получение данных из внешних источников в Loginom отвечает компонента Loginom Integrator установив которую можно получить доступ к публикация и работе с созданными в Loginom веб-сервисами. Необходимо учитывать, что инструменты работы с веб-сервисами доступны только в серверных редакциях Loginom. Для использования узла сценария в качестве веб-сервиса мы:
- установили компонент Loginom Integrator
- настроили модификатор доступа узла, переведя его в статус “Опубликованный”
Выбор модификатора доступа
3. опубликовали пакет в качестве веб-сервиса
После публикации узла в качестве веб-сервиса, алгоритмы внутри него становятся доступны для использования сторонними приложениями. Описание всех веб-сервисов, опубликованных на сервере можно посмотреть, перейдя по ссылке вида: http://<Server>/<App>/rest/help, где <Server> — хост Loginom Integrator, <App> — имя приложения Loginom Integrator. Например: http://localhost/lgi/rest/help. Модель прогнозирования продаж построена в Loginom и публикуется через веб-сервис.
После того, как мы выполнили настройку интеграции, данные на стороне 1С получены и обработаны. мы выполняем отправку данных.
Построение прогноза в Loginom
Построение прогноза происходит в отдельной подмодели
Подмодель с прогнозом
В подмодели находится узел ARIMAX и Калькулятор (для заполнения отчетного периода для прогнозных значений):
Содержание подмодели
ARIMAX — модель авторегрессии скользящего среднего, которая применяется для построения краткосрочных прогнозов величины на основании её предыдущих значений. В ней можно дополнительно учитывать воздействие внешних (eXtended) факторов, влияющих на изменение исходного показателя.
Далее перейдем непосредственно к настройкам узла ARIMAX, в котором строятся прогнозные значения:
- Первое окно — «Настройка входных столбцов», здесь каждому столбцу исходных данных нужно задать одно из трех возможных значений:
- Не задано - автоматически устанавливается для всех полей.
- Входное - нужно задать для полей, которые соответствуют внешнему фактору, в нашем примере их нет.
- Прогнозируемое - может быть установлено только для одного поля, в нашем случае «ПродажнаяСуммаБезНДС».
Настройка входных столбцов обработчика ARIMAX
- После настройки входных столбцов доступна нормализация входных и выходных полей. В подавляющем большинстве случаев её не нужно применять ни к данным временного поля, ни к внешним параметрам.
Настройка нормализации обработчика ARIMAX
- Основные настройки задаются в окне «Настройки ARIMAX», ниже приведены настройки конкретно для нашего случая.
Мы строим прогноз на 3 первых месяца 2023 года (указывается настройкой “Горизонт прогноза”).
Важно понимать, что нет универсальных правил, которые могут быть применимы ко всем задачам прогнозирования, поэтому для каждого набора данных они будут свои.
Настройка обработчика ARIMAX
После того, как мы получим прогноз для одного дистрибьютора в одном регионе (напомним, что на вход подали отфильтрованные данные), необходимо проделать те же действия со всеми данными.
Для этого воспользуемся узлом Цикл. Перейдем непосредственно к настройкам узла ARIMAX, в котором строятся прогнозные значения:
Выбор узла цикла
Далее в настройках указываем по каким уникальным значениям полей нужно делать разбиение (в нашем случае Регион и Дистрибьютор). С этим разбиением мы получаем прогноз по конкретным регионам и дистрибьюторам:
Настройка вида цикла
Чтобы посмотреть результат выполнения узла Цикл, был настроен визуализатор Куб, в колонке “2023” указаны прогнозные значения для каждого региона на первых три месяца.
Куб прогноза продаж на 3 месяца
В случае, когда точность прогноза оказалась недостаточной, необходимо вручную изменить настройки или добавить внешние факторы. В каждом случае настройки индивидуальны.
Получение результатов прогноза в 1С
На последнем шаге мастера прогнозирования данные отправляются в Loginom, где они анализируются и на их основании строится прогноз на следующий период. После прогнозные суммы возвращаются в систему 1С, где пользователь может просмотреть их и сравнить динамику предыдущих периодов. Если результаты прогноза необходимо сохранить в системе и использовать далее, пользователь нажимает на кнопку Сохранить прогноз, и данные записываются в систему:
Получение прогноза в 1С
Хранение результатов прогноза реализовано в формате версий. Такой подход необходим, так как прогноз может строиться на основании разных периодов, что из-за отличающегося набора данных будет влиять на его величину. Также для построения прогноза и поиска оптимального варианта для текущих данных могут использоваться разные веб-сервисы Loginom, прогнозные суммы в таком случае тоже будут отличаться.
Кроме того, в будущем может появиться потребность в использовании дополнительных параметров прогноза или фильтрации данных, что также будет влиять на прогноз, а значит, должно быть зафиксировано в системе.
Преимущества хранения и просмотра версий:
- Дает возможность пользователю быстро понять, что текущая версия не релевантна и принять решение о увеличении периода передаваемых данных в Loginom;
- Пользователь для увеличения точности прогноза может указать внешний фактор (параметр можно будет задавать в 1С и передавать в Loginom).
Например, появилась новая номенклатурная позиция вместо старой; - В случае получения корректирующих отчетов от Дистрибьюторов, можно сделать новый прогноз и сравнить его с прошлыми версиями.
Итоги
- Сбор, хранение и подготовку данных, с учетом активного процесса импортозамещения, логично организовывать на стороне 1С. Т.к. все данные хранятся в системе и можно один раз настроить формат передаваемых данных, а далее только делать настройки для увеличения точности прогноза.
- На платформе Loginom есть множество инструментов для построения прогнозов с использование методов машинного обучения и математической статистики, возможность просмотра процесса обработки данных. Но для построения прогноза, должна быть компетенция работы на платформе Loginom, т.к. минимальные настройки все равно нужно будет делать.
- Интеграция 1С и Loginom позволила производственной компании:
- получать прогноз прямо из 1С с помощью нажатия нескольких кнопок
- иметь возможность менять параметры передаваемых данных из 1С
- анализировать результаты прогнозов с использованием версий.
- Увеличение точности прогноза - это отдельная работа, которой занимаются специалисты со знанием статистических методов и ML. В следующих статьях рубрики “Прогнозирование продаж” мы поделимся с помощью каких инструментов можно повысить точность прогноза, работая, при этом, в описанном в кейсе стеке технологии