In questo quickstart Introduzione a Snowpark per la data science, aiuterai l'azienda di food truck fittizia Tasty Bytes ad aumentare le vendite addestrando un modello per fornire consigli sulle posizioni ai conducenti dei food truck. Utilizzerai Snowpark per Python per preparare i dati, addestrare un modello e distribuirlo. Una volta distribuito, creerai un prototipo di applicazione utilizzando Streamlit per dimostrare come i conducenti dei food truck potrebbero usare questo modello per trovare la posizione migliore in cui parcheggiare per il prossimo turno.

Che cos'è Snowpark?

Snowpark consente agli sviluppatori di eseguire query e creare applicazioni basate sui dati in Python, Java e Scala tramite API e costrutti di programmazione in stile DataFrame che vengono eseguiti sul motore elastico di Snowflake. Scopri di più su Snowpark.

Che cos'è Streamlit?

Streamlit (acquisito da Snowflake a marzo 2022) è una libreria Python che consente di creare e condividere facilmente app web personalizzate. Scopri di più su Streamlit.

Cosa imparerai

Prerequisiti

Cosa realizzerai

Panoramica

Utilizzerai Snowsight, l'interfaccia web di Snowflake, per:

Tasty Bytes gestisce food truck in molte città di tutto il mondo e ogni food truck può scegliere due posizioni di vendita al giorno. Le posizioni corrispondono a punti di interesse di SafeGraph. Il tuo scopo è fare il join di latitudine e longitudine nei dati SafeGraph ottenuti dal Marketplace ai tuoi dati sulle vendite per turno per utilizzarli come feature nell'addestramento dei modelli.

Passaggio 1 - Acquisire i dati sui punti di interesse di SafeGraph dal Marketplace Snowflake

Passaggio 2 - Creare oggetti, caricare i dati e unire i dati

USE ROLE accountadmin;

-- create a development database for data science work 
CREATE OR REPLACE DATABASE frostbyte_tasty_bytes_dev;

-- create raw, harmonized, and analytics schemas 
-- raw zone for data ingestion C
REATE OR REPLACE SCHEMA frostbyte_tasty_bytes_dev.raw; 
-- harmonized zone for data processing 
CREATE OR REPLACE SCHEMA frostbyte_tasty_bytes_dev.harmonized; 
-- analytics zone for development 
CREATE OR REPLACE SCHEMA frostbyte_tasty_bytes_dev.analytics;

-- create csv file format 
CREATE OR REPLACE FILE FORMAT frostbyte_tasty_bytes_dev.raw.csv_ff 
type = 'csv';

-- create an external stage pointing to 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;

-- define shift sales table 
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) 
);

-- create and use a compute warehouse 
CREATE OR REPLACE WAREHOUSE tasty_dsci_wh AUTO_SUSPEND = 60; 
USE WAREHOUSE tasty_dsci_wh;

-- ingest from S3 into the shift sales table 
COPY INTO frostbyte_tasty_bytes_dev.raw.shift_sales 
FROM @frostbyte_tasty_bytes_dev.raw.s3load/analytics/shift_sales/;

-- join in SafeGraph data 
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;

-- promote the harmonized table to the analytics layer for data science development 
CREATE OR REPLACE VIEW frostbyte_tasty_bytes_dev.analytics.shift_sales_v 
  AS 
SELECT * FROM frostbyte_tasty_bytes_dev.harmonized.shift_sales;

-- view shift sales data 
SELECT * FROM frostbyte_tasty_bytes_dev.analytics.shift_sales_v; 

Panoramica

Tasty Bytes intende ottenere una crescita annuale delle vendite del 25% per cinque anni. Per supportare questo obiettivo e massimizzare i ricavi giornalieri in tutta la flotta di food truck, il team di data science deve creare un modello ML per dirigere i food truck verso le posizioni in cui si prevedono le vendite più elevate per un dato turno.

Passaggio 1 - Clonare il repository GitHub

Clona il repository GitHub. Questo repository contiene tutto il codice che ti servirà per completare questo quickstart.

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

Passaggio 2 - Aggiornare il file di autorizzazione

Passaggio 3 - Creare l'ambiente Python

Dal Terminale, esegui i seguenti comandi per creare l'ambiente Python e lanciare il notebook Jupyter:
i. Crea un ambiente Python 3.8 chiamato "py38_env_tb1" (tb1 = Tasty Bytes 1) utilizzando pacchetti (e versioni) provenienti dal canale Snowflake Anaconda

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

ii. Attiva l'ambiente py38_env_tb1

conda activate py38_env_tb1

iii. Installa il pacchetto Snowpark Python e i pacchetti che verranno utilizzati nelle funzioni distribuite su Snowflake dal canale Snowflake Anaconda

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

v. Installa i pacchetti che verranno utilizzati solo nell'ambiente Python (ossia interfaccia utente, visualizzazione...)

pip install streamlit matplotlib plotly notebook

vi. Vai al repository GitHub clonato ed esegui il notebook Jupyter

jupyter notebook

Passaggio 4 - Eseguire il notebook Jupyter

Risoluzione dei problemi

Panoramica

Ora che hai distribuito un modello che prevede le vendite di ogni posizione per il prossimo turno, devi trovare un modo per consentire ai conducenti dei food truck di utilizzare queste previsioni per scegliere le posizioni migliori dove parcheggiare. Devi creare un prototipo di applicazione per mostrare al team di progettazione come un conducente potrebbe interagire con il modello di previsione delle vendite per turno. L'applicazione consentirà a un utente di scegliere una città e un turno (mattina o pomeriggio) e mostrerà le vendite previste per ogni posizione su una mappa.

Passaggio 1 - Verificare i prerequisiti

Passaggio 2 - Facoltativo: rivedere il codice

Passaggio 3 - Eseguire l'app

  conda activate py38_env_tb1
  streamlit run streamlit_app.py

Panoramica degli oggetti creati in questo quickstart

Snowflake:

Anaconda: - Ambiente Python py38_env_tb1

GitHub: - Repository clonato: sfguide-tasty-bytes-snowpark-101-for-data-science

Passaggio 1 - Rimuovere gli oggetti 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;

Passaggio 2 - Rimuovere l'ambiente Python

conda remove --name py38_env_tb1 --all

Passaggio 3 - Rimuovere il repository GitHub clonato

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

Conclusione

Ecco fatto! Hai completato il quickstart Tasty Bytes - Introduzione a Snowpark per la data science.

In questo quickstart hai:

Fasi successive

Per continuare il tuo percorso nel Data Cloud di Snowflake, visita il link qui sotto per vedere gli altri quickstart Powered by Tasty Bytes disponibili.