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.
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.
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.
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.
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;
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.
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
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
pyarrow
prima di installare Snowpark.conda env create -f environment.yml
ii . Attiva l'ambienteconda activate py38_env_tb1
iii. Esegui il notebook Jupyterjupyter notebook
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.
conda activate py38_env_tb1
streamlit run streamlit_app.py
Snowflake:
Anaconda: - Ambiente Python py38_env_tb1
GitHub: - Repository clonato: sfguide-tasty-bytes-snowpark-101-for-data-science
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;
conda remove --name py38_env_tb1 --all
rm -rf sfguide-tasty-bytes-snowpark-101-for-data-science
Ecco fatto! Hai completato il quickstart Tasty Bytes - Introduzione a Snowpark per la data science.
In questo quickstart hai:
Per continuare il tuo percorso nel Data Cloud Snowflake, visita il link qui sotto per vedere gli altri quickstart Powered by Tasty Bytes disponibili.