Прогнозирование временных рядов в Snowflake с использованием SQL
Прогнозирование спроса, управление цепочками поставок и запасами, финансовое планирование важны для бизнес-операций. Modelstar позволяет вам сделать это в Snowflake всего с одной строкой SQL.

Что такое прогнозирование временных рядов и варианты его использования?
Прогнозирование временных рядов — это метод прогнозирования значений на основе исторических данных, отобранных по времени.
Прогнозирование является рудиментарным для управления
Прогнозирование может помочь компаниям принимать правильные бизнес-решения по управлению цепочками поставок, управлению запасами (сколько и когда пополнять запасы), финансовому планированию, плану продуктов, стратегии найма и т. д. При наличии точных и своевременных результатов прогнозирования управление бизнесом может иметь лучшее понимание того, как распределять ресурсы или использовать попутный ветер.
Технические проблемы прогнозирования
Прогнозирование — это применение анализа временных рядов. Есть несколько компонентов, которые следует учитывать:
- Сезонность: периодические изменения во времени. Пример: летние и зимние каникулы — ежегодные, или повышенное потребление кофе по утрам — ежедневно.
- Тренд: непрерывные непериодические изменения. Пример: Рост продаж компании за последние 5 лет.
- Разрушительные события: внезапные изменения. Это может быть вызвано как предсказуемыми факторами, такими как праздники или сервисное обслуживание, так и непредсказуемыми проблемами, такими как случайные ошибки или ошибки.
Технические проблемы внедрения
Python имеет богатую экосистему для реализации алгоритмов машинного обучения и прогнозирования. Новая возможность Snowflake Snowpark, позволяющая использовать Python в вашем хранилище данных, используя пользовательские функции для запуска Python в SQL, полностью меняет представление о преобразованиях, которые вы можете выполнять с данными. Тем не менее, это может быть сложно и занять много времени, если вы хотите внедрить комплексное решение для выполнения прогнозирования. Modelstar решает эту проблему, предоставляя оптимизированное решение, позволяющее использовать супервозможности Python в SQL.
Modelstar — это проект с открытым исходным кодом, основанный на недавно запущенных функциях Snowflake, таких как Snowpark. Он автоматически обрабатывает зависимости, артефакты модели и ввод-вывод файлов в вычислениях Snowflake.
SQL 1-liner для прогнозирования
Modelstar позволяет отправлять модели прогнозирования и управлять ими, а также визуализировать результаты моделирования с помощью одной строки SQL внутри Snowflake. Под капотом Modelstar предоставляет предварительно созданные алгоритмы прогнозирования и предоставляет их как хранимую процедуру SQL в вашей базе данных. В этом примере мы будем использовать univariate_time_series_forecast
( API doc ). Этот API основан на библиотеке Prophet с открытым исходным кодом , которая является одним из наиболее широко используемых алгоритмов прогнозирования в отрасли.
В этом руководстве представлены шаги для создания модели прогнозирования временных рядов и отчета. Это покрывает:
- Основная концепция: о вариантах использования и технологиях прогнозирования продаж.
- Инструмент Modelstar CLI: руководство по установке Modelstar
univariate_time_series_forecast
Синтаксис SQL: однострочный SQL для прогнозирования- Отчет о прогнозировании: результаты прогнозов готовы для использования бизнес-группами.

Подготовка к переходу на SQL ML
Это краткое руководство по настройке Modelstar, если вы впервые пользуетесь Modelstar.
Шаг №1: Установите Modelstar
$ pip install modelstar
Проверьте установку с помощью быстрой проверки версии:
$ modelstar --version
Шаг № 2: Инициализируйте проект
$ modelstar init forecast_project
Теперь вы увидите forecast_project
папку, созданную в вашем рабочем каталоге.
Шаг № 3: Настройка сеанса
Внутри forecast_project
папки найдите файл modelstar.config.yaml
и откройте его в своем любимом редакторе. Добавьте в него данные своей учетной записи Snowflake и учетные данные. Не стесняйтесь называть сеанс любым именем. В этом примере мы используем snowflake-test
. Учетные данные в этом файле используются для подключения к вашему хранилищу данных Snowflake. (Примечание. Не фиксируйте файл modelstar.config.yaml в своем CI/CD, системе управления версиями.)
# ./modelstar.config.yaml
# MODELSTAR CONFIGURATION FILE
---
sessions:
- name: snowflake-test
connector: snowflake
config:
account: WQA*****
username: <username>
password: <password>
database: MODELSTAR_TEST
schema: PUBLIC
stage: test
warehouse: COMPUTE_WH
Шаг № 4: Пингуем Snowflake
Теперь мы можем начать сеанс Modelstar с вашего терминала. Внутри каталога только что сгенерированного проекта Modelstar (в нашем примере это ./forecast_project/
) запустите следующее:
$ modelstar use snowflake-test
Успешный пинг должен привести к чему-то вроде этого:

Шаг № 5: Зарегистрируйте алгоритм прогноза в Snowflake
Modelstar предоставляет готовый алгоритм прогнозирования и управляет зависимостями для этого алгоритма, так что вам не придется этого делать. Чтобы сделать это доступным на вашем складе Snowflake, выполните следующую команду:
$ modelstar register forecast:univariate_time_series_forecast

Шаг № 6: Загрузите образцы данных о продажах в Snowflake (необязательно, если вы используете собственный набор данных )
Если вы хотите попробовать алгоритм прогнозирования на примере набора данных о продажах, запустите эту команду, чтобы создать таблицу данных в своем хранилище данных. Вы можете пропустить этот шаг, если хотите использовать свои собственные данные.
$ modelstar create table sample_data/time_series_data.csv:TS_DATA_TABLE
Построить модель прогноза с помощью SQL 1- linear
Запустите этот скрипт в рабочей таблице Snowflake
Используйте следующую команду в Snowflake для построения модели прогнозирования (в приведенном ниже примере используются образцы данных, загруженные на шаге № 6):
CALL UNIVARIATE_TIME_SERIES_FORECAST('TS_DATA_TABLE', 'DS', 'Y', 40, 'M');

Чтобы запустить алгоритм прогнозирования на ваших собственных данных
Под капотом алгоритм прогноза работает внутри Snowflake как хранимая процедура. Он принимает следующие параметры:
Чтобы настроить собственный период прогноза, ознакомьтесь с полным списком псевдонимов единиц в этом документе API .
Проверить результат
После завершения обучения модели в окне «Результаты снежинки» успешный запуск должен вывести строку json, подобную этой:
{
"return_table": "RESULT_UNIVARIATE_TIME_SERIES_FORECAST",
"run_id": "3NvQXnHQqUdYG4Fu"
}
Проверьте таблицу
Давайте проверим таблицу результатов прогона, используя:
SELECT * FROM RESULT_UNIVARIATE_TIME_SERIES_FORECAST;
DS
(datetime
): дата и времяY_FORECAST
,YHAT_LOWER
,YHAT_UPPER
(с плавающей запятой): среднее значение, нижняя и верхняя связи прогнозируемого значения (Uncertainty Intervals
их значение см. в разделе «Глоссарий»).

Отчет, который записывает информацию о запуске с артефактами машинного обучения, автоматически создается с помощью Modelstar. Чтобы проверить отчет, просто запустите эту команду на локальном компьютере:
$ modelstar check <run_id>

Как уже упоминалось, в вашем браузере появится отчет:

Что в отчете
Отчет включает 3 раздела:
- Метаинформация об этом прогоне
- Диаграмма прогнозирования: для проверки качества моделирования и результатов прогнозирования.
- Компонентный анализ: чтобы проиллюстрировать тенденцию и сезонность, которую «изучила» ваша модель, включая общую тенденцию, а также годовую и еженедельную сезонность (циклические закономерности в течение 1 года/недели).



Прогноз в выборке и вне выборки: из прогноза в выборке вы можете проверить, насколько хорошо модель прогноза соответствует фактическим данным. Прогноз вне выборки показывает предсказание будущего.
Интервалы неопределенности: полоса между верхней и нижней границами. Это означает, что с вероятностью 80% истинное значение попадает в этот интервал. Более высокое требование определенности приводит к более широкому диапазону (см . статью Бартоша ). Неопределенность также растет по мере того, как мы продвигаемся дальше в будущее, что приводит к расширению полосы как функции времени.
Заключение
Прогнозирование является рудиментарным для управления бизнесом. Наша цель состояла в том, чтобы отправить функцию прогнозирования в Snowflake для обучения модели машинного обучения и создания прогнозов с ее использованием. Всего этого мы добились всего одной строкой SQL. Наряду с этим создается отчет о прогоне, содержащий подробную информацию о прогоне вместе с прогнозным анализом. Это стало возможным благодаря Modelstar .
Загляните в репозиторий Modelstar на GitHub: здесь пометьте его звездочкой, чтобы быть в курсе последних обновлений. В случае ошибок, проблем или запросов функций для вашего варианта использования обратитесь на Github или создайте вопрос на GitHub .
- Репозиторий GitHub:https://github.com/modelstar-labs/modelstar
- Документация:https://modelstar.io/docs/quickstart/