Dans ce guide Quickstart Snowpark 101 pour la Data Science, vous allez aider l'entreprise fictive de food trucks Tasty Bytes à accroître ses ventes en entraînant un modèle destiné à fournir des recommandations d'emplacements aux chauffeurs des camionnettes. Vous allez utiliser Snowpark for Python pour préparer les données, mais aussi pour entraîner et déployer un modèle. Une fois celui-ci déployé, vous créerez un prototype d'application à l'aide de Streamlit afin de montrer comment les chauffeurs des camionnettes pourraient utiliser le modèle pour trouver le meilleur emplacement de stationnement à chaque fois.

Qu'est-ce que Snowpark ?

Snowpark permet aux développeurs d'interroger et de créer des applications de données en Python, Java et Scala via des API et des constructions de programmation de type DataFrame qui s'exécutent sur le moteur élastique de Snowflake. Pour en savoir plus sur Snowpark, cliquez ici.

Qu'est-ce que Streamlit ?

Streamlit (dont Snowflake a fait l'acquisition en mars 2022) est une bibliothèque Python qui permet de créer et de partager facilement des applications Web personnalisées. Pour en savoir plus sur Streamlit, cliquez ici.

Vous allez apprendre :

Conditions préalables

Vous allez créer :

Présentation

Vous allez utiliser Snowsight, l'interface Web de Snowflake, pour : - Accéder aux données de localisation de SafeGraph à partir de la Marketplace Snowflake - Créer des objets Snowflake (entrepôt, base de données, schéma) - Intégrer des données de ventes par équipe à partir de S3 - Associer les données de ventes par équipe aux données de localisation de SafeGraph

Tasty Bytes exploite des food trucks dans des villes du monde entier, chaque camionnette ayant la possibilité de choisir deux emplacements différents chaque jour. Les emplacements sont associés aux points d'intérêt de SafeGraph. Vous souhaitez associer à vos données de ventes par équipe la latitude et la longitude des données SafeGraph de la Marketplace afin de les utiliser en tant que fonctionnalités dans l'entraînement du modèle.

Étape 1 – Acquérir des données de points d'intérêt SafeGraph à partir de la Marketplace Snowflake

Étape 2 – Créer des objets, charger des données et associer des données

USE ROLE accountadmin;

-- Créez une base de données de développement pour les travaux de data science 
CREATE OR REPLACE DATABASE frostbyte_tasty_bytes_dev;

-- Créez des schémas brut, harmonisé et analytique 
-- Zone brute pour l'ingestion de données 
CREATE OR REPLACE SCHEMA frostbyte_tasty_bytes_dev.raw; 
-- Zone harmonisée pour le traitement des données 
CREATE OR REPLACE SCHEMA frostbyte_tasty_bytes_dev.harmonized; 
-- Zone analytique pour le développement 
CREATE OR REPLACE SCHEMA frostbyte_tasty_bytes_dev.analytics;

-- Créez le format de fichier csv 
CREATE OR REPLACE FILE FORMAT frostbyte_tasty_bytes_dev.raw.csv_ff type = 'csv';

-- Créez une zone de préparation externe pointant vers S3 
CREATE OR REPLACE STAGE frostbyte_tasty_bytes_dev.raw.s3load 
COMMENT = 'Quickstarts S3 Stage Connection' 
url = 's3://sfquickstarts/frostbyte_tastybytes/' 
file_format = frostbyte_tasty_bytes_dev.raw.csv_ff;

-- Définissez une table de ventes par équipe 
CREATE OR REPLACE TABLE frostbyte_tasty_bytes_dev.raw.shift_sales( 
  location_id NUMBER(19,0), 
  city VARCHAR(16777216), 
  date DATE, 
  shift_sales FLOAT, 
  shift VARCHAR(2), 
  month NUMBER(2,0), 
  day_of_week NUMBER(2,0), 
  city_population NUMBER(38,0) 
);

-- Créez et utilisez un entrepôt de calcul 
CREATE OR REPLACE WAREHOUSE tasty_dsci_wh AUTO_SUSPEND = 60; 
USE WAREHOUSE tasty_dsci_wh;

-- Ingérez les données de S3 vers la table de ventes par équipe 
COPY INTO frostbyte_tasty_bytes_dev.raw.shift_sales 
FROM @frostbyte_tasty_bytes_dev.raw.s3load/analytics/shift_sales/;

-- Associez les données SafeGraph 
CREATE OR REPLACE TABLE frostbyte_tasty_bytes_dev.harmonized.shift_sales 
  AS 
SELECT 
    a.location_id, 
    a.city,
    a.date, 
    a.shift_sales, 
    a.shift, 
    a.month, 
    a.day_of_week, 
    a.city_population, 
    b.latitude, 
    b.longitude 
FROM frostbyte_tasty_bytes_dev.raw.shift_sales a 
JOIN frostbyte_safegraph.public.frostbyte_tb_safegraph_s b 
ON a.location_id = b.location_id;

-- Basculez la table harmonisée vers la couche analytique pour de développement data science 
CREATE OR REPLACE VIEW frostbyte_tasty_bytes_dev.analytics.shift_sales_v 
  AS 
SELECT * FROM frostbyte_tasty_bytes_dev.harmonized.shift_sales;

-- Affichez les données de ventes par équipe 
SELECT * FROM frostbyte_tasty_bytes_dev.analytics.shift_sales_v; 

Présentation

Tasty Bytes vise une croissance des ventes de 25 % par an sur cinq ans. Pour atteindre cet objectif et optimiser les revenus quotidiens de la flotte de camionnettes, l'équipe data science doit concevoir un modèle de ML pour orienter les camionnettes vers les emplacements où les ventes devraient être les plus élevées sur une période de travail donnée.

Étape 1 – Cloner le référentiel GitHub

Clonez le référentiel GitHub. Le référentiel contient tout le code dont vous aurez besoin pour terminer ce guide Quickstart.

$ git clone https://github.com/Snowflake-Labs/sfguide-tasty-bytes-snowpark-101-for-data-science.git

Étape 2 – Mettre à jour le fichier d'autorisation

Étape 3 – Créer l'environnement Python

Sur le terminal, procédez comme suit pour créer l'environnement Python et lancer le notebook Jupyter :
i. Créez un environnement Python 3.8 appelé « py38_env_tb1 » (tb1 = Tasty Bytes 1) à l'aide de packages (et versions) du canal Anaconda Snowflake.

conda create --name py38_env_tb1 --override-channels -c https://repo.anaconda.com/pkgs/snowflake python=3.8

ii. Activez l'environnement py38_env_tb1.

conda activate py38_env_tb1

iii. Installez les packages Snowpark Python qui seront utilisés dans les fonctions déployées sur Snowflake depuis le canal Anaconda Snowflake.

conda install -c https://repo.anaconda.com/pkgs/snowflake snowflake-snowpark-python numpy pandas scikit-learn joblib cachetools

v. Installez les packages qui seront utilisés uniquement dans l'environnement Python (interface utilisateur, visualisation, par exemple).

pip install streamlit matplotlib plotly notebook

vi. Accédez au référentiel GitHub cloné et lancez le notebook Jupyter.

jupyter notebook

Étape 4 – Exécuter le notebook Jupyter

Dépannage

Présentation

Maintenant que vous avez déployé un modèle qui prévoit les futures ventes par équipe de chaque emplacement, trouvez un moyen d'aider les chauffeurs de camionnettes à utiliser ces prévisions pour choisir leur emplacement de stationnement. Vous devez créer un prototype d'application pour montrer à l'équipe d'ingénierie comment un chauffeur de camionnette pourrait utiliser le modèle de prévisions de ventes par équipe. Grâce à l'application, chaque utilisateur pourra choisir une ville et un horaire (midi ou soir), mais aussi afficher les prévisions de ventes par emplacement sur une carte.

Étape 1 – Confirmer les conditions préalables

Étape 2 (facultative) – Vérifier le code

Étape 3 – Lancer l'application

Présentation des objets créés dans ce guide Quickstart

Snowflake :

Anaconda :

GitHub :

Étape 1 – Supprimer des objets Snowflake

USE ROLE accountadmin;
DROP PROCEDURE IF EXISTS frostbyte_tasty_bytes.analytics.sproc_train_linreg(varchar, array, varchar, varchar);
DROP FUNCTION IF EXISTS frostbyte_tasty_bytes.analytics.udf_linreg_predict_location_sales(float, float, float, float, float, float, float, float);
DROP DATABASE IF EXISTS frostbyte_tasty_bytes_dev;
DROP DATABASE IF EXISTS frostbyte_safegraph;
DROP WAREHOUSE IF EXISTS tasty_dsci_wh;

Étape 2 – Supprimer l'environnement Python

conda remove --name py38_env_tb1 --all

Étape 3 – Supprimer le référentiel GitHub cloné

rm -rf sfguide-tasty-bytes-snowpark-101-for-data-science

Conclusion

Vous avez réussi ! Vous avez terminé le guide Quickstart Tasty Bytes Snowpark 101 pour la Data Science.

Vous avez :

Prochaines étapes

Pour continuer à découvrir le Data Cloud Snowflake, cliquez sur le lien ci-dessous pour voir les autres guides Quickstart Tasty Bytes à votre disposition.