Prévision de séries chronologiques dans Snowflake à l'aide de SQL
La prévision de la demande, la gestion de la chaîne d'approvisionnement et des stocks, la planification financière sont importantes pour les opérations commerciales. Modelstar vous permet de le faire dans Snowflake, avec seulement 1 ligne de SQL.
Qu'est-ce que la prévision de séries chronologiques et ses cas d'utilisation ?
La prévision de séries chronologiques est une technique permettant de prédire des valeurs basées sur des données historiques échantillonnées dans le temps.
La prévision est rudimentaire pour la gestion
Les prévisions peuvent aider les entreprises à prendre des décisions commerciales appropriées sur la gestion de la chaîne d'approvisionnement, la gestion des stocks (quantité et quand réapprovisionner), la planification financière, la feuille de route des produits et la stratégie d'embauche, etc. Avec des résultats de prévision précis et opportuns, la gestion d'entreprise peut avoir une meilleure compréhension de la façon d'allouer les ressources ou de tirer parti des vents favorables.
Défis techniques pour la prévision
La prévision est une application de l'analyse des séries chronologiques. Il y a plusieurs composants à considérer :
- Saisonnalité : changements périodiques dans le temps. Exemple : les vacances d'été et d'hiver sont annuelles, ou une consommation de café plus élevée le matin est quotidienne.
- Tendance : changements continus non périodiques. Exemple : Croissance des ventes de l'entreprise au cours des 5 dernières années.
- Événements perturbateurs : changements soudains. Il peut être motivé à la fois par des facteurs prévisibles, tels que les vacances ou la maintenance du service, et par des problèmes imprévisibles, tels que des erreurs aléatoires ou des bogues.
Les défis techniques de la mise en œuvre
Python dispose d'un riche écosystème pour implémenter des algorithmes d'apprentissage automatique et de prévision. La nouvelle fonctionnalité Snowpark de Snowflake qui apporte Python à votre entrepôt de données, en utilisant des UDF pour exécuter Python dans SQL, change la donne sur les transformations que vous pouvez effectuer sur vos données. Cependant, cela peut être intimidant et prendre du temps si vous souhaitez mettre en œuvre une solution de bout en bout pour effectuer des prévisions. Modelstar résout ce problème en fournissant une solution rationalisée pour apporter les super pouvoirs de Python à SQL.
Modelstar est un projet open source et s'appuie sur les fonctionnalités récemment lancées de Snowflake, telles que Snowpark. Il gère automatiquement les dépendances, les artefacts de modèle et les E/S de fichiers dans le calcul Snowflake.
Le SQL 1-liner pour la prévision
Modelstar vous permet d'expédier et de gérer des modèles de prévision et de visualiser les résultats de la modélisation avec 1 ligne de SQL dans Snowflake. Sous le capot, Modelstar fournit des algorithmes de prévision prédéfinis et les expose sous forme de procédure stockée SQL dans votre base de données. Dans cet exemple, nous utiliserons univariate_time_series_forecast
( API doc ). Cette API est basée sur une bibliothèque open source Prophet , qui est l'un des algorithmes de prévision les plus utilisés dans l'industrie.
Ce didacticiel décrit les étapes de création d'un modèle de prévision de série chronologique et d'un rapport. Cela couvre:
- Concept de base : à propos des cas d'utilisation et de la technologie de prévision des ventes.
- Outil Modelstar CLI : Guide d'installation de Modelstar
univariate_time_series_forecast
Syntaxe SQL : le SQL 1-liner pour faire des prévisions- Rapport prévisionnel : résultats prévisionnels prêts à être consommés par les équipes métiers
Préparation au parcours
Il s'agit d'un guide de démarrage rapide pour configurer Modelstar si vous utilisez Modelstar pour la première fois.
Étape 1 : Installez Modelstar
$ pip install modelstar
Vérifiez l'installation avec une vérification de version rapide :
$ modelstar --version
Étape 2 : Initialiser un projet
$ modelstar init forecast_project
Vous verrez maintenant un forecast_project
dossier créé dans votre répertoire de travail.
Étape 3 : Configurer la session
Dans forecast_project
le dossier, recherchez le fichier modelstar.config.yaml
et ouvrez-le avec votre éditeur préféré. Ajoutez-y les informations et les informations d'identification de votre compte Snowflake. N'hésitez pas à nommer la session avec n'importe quel nom. Dans cet exemple, nous utilisons snowflake-test
. Les informations d'identification de ce fichier sont utilisées pour se connecter à votre entrepôt de données Snowflake. (Remarque : ne validez pas le fichier modelstar.config.yaml dans votre CI/CD, contrôle de version.)
# ./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
Étape 4 : Ping Snowflake
Nous pouvons maintenant démarrer une session Modelstar depuis votre terminal. Dans le répertoire du projet Modelstar nouvellement généré (dans notre exemple, il s'agit de ./forecast_project/
), exécutez ceci :
$ modelstar use snowflake-test
Un ping réussi devrait conduire à quelque chose comme ceci :
Étape 5 : Enregistrez l'algorithme de prévision dans Snowflake
Modelstar fournit l'algorithme de prévision prêt à l'emploi et gère les dépendances de cet algorithme, pour que vous n'ayez pas à le faire. Pour le rendre disponible dans votre entrepôt Snowflake, exécutez la commande suivante :
$ modelstar register forecast:univariate_time_series_forecast
Étape 6 : Téléchargez des exemples de données de vente sur Snowflake (facultatif, si vous utilisez votre propre ensemble de données )
Si vous souhaitez essayer l'algorithme de prévision sur un exemple d'ensemble de données de ventes, exécutez cette commande pour créer une table de données dans votre entrepôt de données. Vous pouvez ignorer cette étape si vous souhaitez utiliser vos propres données.
$ modelstar create table sample_data/time_series_data.csv:TS_DATA_TABLE
Construire un modèle de prévision à l'aide d'un SQL 1- linéaire
Exécutez ce script dans une feuille
Utilisez la commande suivante dans Snowflake pour créer le modèle de prédiction (l'exemple ci-dessous utilise les exemples de données téléchargés à l'étape 6) :
CALL UNIVARIATE_TIME_SERIES_FORECAST('TS_DATA_TABLE', 'DS', 'Y', 40, 'M');
Pour exécuter l'algorithme de prévision sur vos propres données
Sous le capot, l'algorithme de prévision s'exécute dans Snowflake en tant que procédure stockée. Il prend les paramètres suivants :
Pour configurer votre propre période de prévision, consultez ce document API pour une liste complète des alias d'unité.
Vérifiez le résultat
Une fois la formation du modèle terminée, dans la fenêtre Snowflake Results, une exécution réussie doit générer une chaîne json similaire à celle-ci :
{
"return_table": "RESULT_UNIVARIATE_TIME_SERIES_FORECAST",
"run_id": "3NvQXnHQqUdYG4Fu"
}
Consultez le tableau
Vérifions le tableau des résultats de l'exécution en utilisant :
SELECT * FROM RESULT_UNIVARIATE_TIME_SERIES_FORECAST;
DS
(datetime
) : date-heureY_FORECAST
,YHAT_LOWER
,YHAT_UPPER
(flottant) : liaisons moyenne, inférieure et supérieure de la valeur prédite (voirUncertainty Intervals
dans la section Glossaire pour leur signification).
Un rapport qui enregistre les informations sur l'exécution, avec les artefacts d'apprentissage automatique, est généré automatiquement avec Modelstar. Pour vérifier le rapport, exécutez simplement cette commande sur votre ordinateur local :
$ modelstar check <run_id>
Comme il le mentionne, un rapport apparaîtra dans votre navigateur :
Qu'y a-t-il dans le rapport
Le rapport comprend 3 sections :
- Méta-informations de cette course
- Tableau de prévision : pour vérifier la qualité de la modélisation et prévoir les résultats.
- Analyse en composantes : pour illustrer la tendance et la saisonnalité, votre modèle a « appris », y compris une tendance globale, et une saisonnalité annuelle et hebdomadaire (modèles cycliques sur 1 an/semaine).
Prévision dans l'échantillon et hors échantillon : à partir de la prévision dans l'échantillon, vous pouvez vérifier dans quelle mesure le modèle de prévision correspond aux données réelles. La prévision hors échantillon montre la prédiction de l'avenir.
Intervalles d'incertitude : la bande entre les limites supérieure et inférieure. Cela signifie qu'il y a une probabilité de 80 % que la vraie valeur tombe dans cet intervalle. Une exigence de certitude plus élevée conduit à une bande plus large (voir l'article de Bartosz ). L'incertitude croît également à mesure que nous avançons dans le futur, ce qui conduit à un élargissement de la bande en fonction du temps.
Conclusion
La prévision est rudimentaire pour la gestion d'entreprise. Notre objectif était d'expédier une fonction de prévision à Snowflake pour former un modèle d'apprentissage automatique et faire des prédictions à l'aide de celui-ci. Nous avons réalisé tout cela avec seulement 1 ligne de SQL. Parallèlement à cela, un rapport d'exécution contenant les détails de l'exécution ainsi que l'analyse des prévisions est généré. Cela a été rendu possible par Modelstar .
Consultez le référentiel GitHub de Modelstar : ici , lancez-le pour être mis à jour sur les dernières nouveautés. En cas de bogues, de problèmes ou de demandes de fonctionnalités pour votre cas d'utilisation, contactez Github ou ouvrez un problème sur GitHub .
- Référentiel GitHub :https://github.com/modelstar-labs/modelstar
- Documentation:https://modelstar.io/docs/quickstart/