이 데이터 사이언스를 위한 Snowpark 101 Quickstart에서는 가상의 푸드 트럭 회사인 Tasty Bytes가 트럭 기사에게 위치 추천을 제공하기 위해 모델을 훈련시켜 매출을 올리는 것을 돕게 됩니다. 여러분은 데이터를 준비하고, 모델을 훈련시키고, 모델을 배포하기 위해 Snowpark for Python을 사용할 것입니다. 배포한 후에는 Streamlit을 사용해 애플리케이션 프로토타입을 생성하여 트럭 기사가 다가오는 교대조를 위해 주차할 최고의 위치를 찾는 데 모델을 사용할 수 있는 방법을 확인할 것입니다.

Snowpark란 무엇일까요?

Snowpark를 사용하면 개발자는 Snowflake의 유연한 엔진에서 실행되는 API 및 DataFrame형 프로그래밍 구조를 통해 Python, Java 및 Scala에서 데이터 애플리케이션을 쿼리 및 생성할 수 있습니다. Snowpark에 대해 자세히 알아보십시오.

Streamlit이란 무엇일까요?

Streamlit*(2022년 3월에 Snowflake에서 인수)*은 사용자 정의 웹 앱을 생성 및 공유하는 것을 쉽게 만드는 Python 라이브러리입니다. Streamlit에 대해 자세히 알아보십시오.

알아볼 내용

사전 필요 조건 및 지식

구축할 것

개요

다음을 위해 Snowflake 웹 인터페이스인 Snowsight를 사용하게 됩니다.

Tasty Bytes는 전 세계 도시에서 푸드 트럭을 운영합니다. 각 트럭은 매일 2개의 각기 다른 판매 위치를 선택할 수 있습니다. 위치는 SafeGraph 관심 지역에 매핑됩니다. 모델 훈련에서 피처로 사용하기 위해 SafeGraph 마켓플레이스 데이터의 위도와 경도를 교대조 매출 데이터와 결합하고자 합니다.

1단계 - Snowflake 마켓플레이스에서 SafeGraph POI 데이터 획득

2단계 - 객체 생성, 데이터 로드 및 데이터 결합

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
CREATE 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는 5년에 걸쳐 전년 대비 25%의 매출 성장을 달성하고자 합니다. 이 목표를 지원하고 트럭 군단에 걸쳐 일일 수익을 극대화하려면 데이터 사이언스 팀은 주어진 교대조에서 가장 높은 매출을 올릴 것으로 예측되는 위치로 트럭을 안내하기 위해 ML 모델을 구축해야 합니다.

1단계 - GitHub 리포지토리 복제

GitHub 리포지토리복제합니다. 이 리포지토리에는 이 Quickstart 가이드를 성공적으로 완료하는 데 필요한 모든 코드가 포함되어 있습니다.

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

2단계 - 인증 파일 업데이트

3단계- Python 환경 생성

터미널에서 다음을 실행하여 Python 환경을 구축하고 Jupyter Notebook을 시작합니다.
1. Snowflake Anaconda 채널의 패키지(및 버전)을 사용하여 ‘py38_env_tb1'(tb1 = Tasty Bytes 1)라는 Python 3.8 환경을 생성합니다.

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

2. py38_env_tb1 환경을 활성화합니다.

conda activate py38_env_tb1

3. Snowpark Python 패키지 및 Snowflake Anaconda 채널에서 Snowflake로 배포된 함수에서 사용할 패키지를 설치합니다.

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

4. Python 환경(예: UI, 시각화 등)에서만 사용될 패키지를 설치합니다.

pip install streamlit matplotlib plotly notebook

5. 복제된 GitHub 리포지토리로 이동하여 Jupyter Notebook을 실행합니다.

jupyter notebook

4단계- Jupyter Notebook 실행

문제 해결

개요

이제 다가오는 시프트를 위해 각 위치의 교대조 매출을 예측하는 모델을 배포했으니 트럭 기사가 주차할 자리를 선정하기 위해 이러한 예측을 사용할 방법을 찾아보려고 합니다. 엔지니어링 팀에 트럭 기사가 교대조 매출 예측 모델과 어떻게 상호 작용할지 보여주기 위해 애플리케이션 프로토타입을 생성해야 합니다. 이 애플리케이션을 통해 사용자는 도시와 교대조 시간(AM 또는 PM)을 선택하고 지도에서 위치별로 예상 매출을 표시할 수 있습니다.

1단계 - 사전 필요 조건 확인

2단계 - 선택 사항: 코드 검토

3단계 - 앱 시작

이 Quickstart에 생성된 객체 개요

Snowflake:

Anaconda:

GitHub:

1단계 - 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;

2단계 - Python 환경 제거

conda remove --name py38_env_tb1 --all

3단계 - 복제된 GitHub 리포지토리 제거

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

결론

끝났습니다! Tasty Bytes - 데이터 사이언스를 위한 Snowpark 101 Quickstart를 성공적으로 완료하셨습니다.

이를 완료하면서 진행한 내용은 다음과 같습니다.

다음 단계

Snowflake 데이터 클라우드에서의 여정을 계속하려면 아래 링크를 방문하여 사용 가능한 더 많은 Tasty Bytes - Quickstart를 확인하십시오.