노트북으로 Snowflake 체험하기¶
Snowflake Notebooks 는 다른 Snowflake 기능과 함께 사용할 수 있는 개발 환경입니다. 이 항목에서는 노트북 내에서 다른 Snowflake 기능을 활용하는 방법을 보여 드립니다.
노트북의 Snowpark Python¶
Snowpark 라이브러리 는 데이터 파이프라인에서 데이터를 쿼리하고 처리하기 위한 직관적인 API를 제공합니다. Snowpark 라이브러리를 사용하면 사용자는 애플리케이션 코드가 실행되는 시스템으로 데이터를 옮기지 않고도 Snowflake에서 데이터를 처리하는 애플리케이션을 빌드할 수 있습니다. 저장 프로시저를 작성하고 Snowflake에서 해당 프로시저를 작업으로 예약하여 데이터 변환과 처리를 자동화할 수도 있습니다.
Snowpark를 사용하면 노트북의 Python 셀에 Snowpark 코드를 작성하여 Snowflake에서 대규모로 데이터를 쿼리하고 이를 처리할 수 있습니다.
사용 예¶
Snowflake Notebooks 환경에서 Snowpark Python이 사전 설치되어 제공됩니다. 다음 예제는 노트북의 Snowpark 라이브러리를 사용하여 CSV 파일과 Snowflake 테이블을 읽고 그 내용을 출력으로 표시하는 예제입니다.
노트북에서 키보드 단축키 를 사용하거나 + Python 를 선택해 Python 셀을 추가합니다. Snowflake Notebooks 및 Snowpark는 모두 Python 3.9를 지원합니다.
Snowpark 세션을 설정합니다. 노트북에서는 세션 컨텍스트 변수가 미리 구성되어 있습니다.
get_active_session
메서드를 사용하여 세션 컨텍스트 변수를 가져올 수 있습니다.from snowflake.snowpark.context import get_active_session session = get_active_session()
스테이지 위치에서 CSV 파일을 Snowpark DataFrame에 로드하려면 Snowpark를 사용합니다. 이 예제에서는 이름이
tastybyte_stage
인 스테이지를 사용합니다.df = session.read.options({"infer_schema":True}).csv('@TASTYBYTE_STAGE/app_order.csv')
기존 Snowflake 테이블
app_order
를 Snowpark DataFrame에 로드합니다.df = session.table("APP_ORDER")
Snowpark DataFrame을 표시합니다.
df
참고
Snowflake Notebooks 환경 외에서는 df.show()
를 호출하여 DataFrame 을 출력해야 합니다. Snowflake Notebooks 에서는 df
가 출력되면 DataFrames이 즉시 평가됩니다. DataFrame은 대화형 Streamlit DataFrame 디스플레이(st.dataframe)로 인쇄됩니다. DataFrames 출력은 10,000행 또는 8 MB 중 낮은 값으로 제한됩니다.
Snowpark 제한 사항¶
Snowflake Notebook은 Snowpark 세션을 생성하므로 Snowpark 세션 클래스에서 사용 가능한 대부분의 메서드를 사용할 수 있습니다. 하지만 노트북은 로컬 개발 환경이 아닌 Snowflake 내부에서 실행되므로 다음 메서드를 사용할 수 없습니다.
session.add_import
session.add_packages
session.add_requirements
일부 Snowpark Python 연산자는 SPROCs에서 작동하지 않습니다. 전체 작업 목록은 Python 저장 프로시저 제한 사항 섹션을 참조하십시오.
참고
이러한 빠른 시작은 예시로만 표시됩니다. 이 예시를 따르기 위해서는 Snowflake가 소유하거나 제공하지 않는 서드 파티 데이터, 제품 또는 서비스에 대한 추가 권한이 필요할 수 있습니다. Snowflake는 이러한 예제의 정확성을 보장하지 않습니다.
노트북의 Streamlit¶
Streamlit 은 머신 러닝과 데이터 과학을 위한 사용자 지정 웹 앱을 쉽게 만들고 공유할 수 있게 해주는 오픈 소스 Python 라이브러리입니다. Streamlit을 사용하여 노트북에서 직접 대화형 데이터 애플리케이션을 구축할 수 있습니다. 노트북에서 직접 앱을 테스트하고 개발할 수 있습니다. Streamlit은 노트북에 사전 설치되어 제공되므로 빠르게 시작할 수 있습니다.
사용 예¶
Streamlit은 Snowflake Notebooks 환경과 함께 사전 설치되어 제공됩니다. 이 섹션의 예제에서는 Streamlit을 사용하여 대화형 데이터 앱을 만듭니다.
필요한 라이브러리 가져오기
import streamlit as st import pandas as pd
먼저 앱에 대한 샘플 데이터를 만듭니다.
species = ["setosa"] * 3 + ["versicolor"] * 3 + ["virginica"] * 3 measurements = ["sepal_length", "sepal_width", "petal_length"] * 3 values = [5.1, 3.5, 1.4, 6.2, 2.9, 4.3, 7.3, 3.0, 6.3] df = pd.DataFrame({"species": species,"measurement": measurements,"value": values}) df
Streamlit 라이브러리에서 대화형 슬라이더를 설정합니다.
st.markdown("""# Interactive Filtering with Streamlit! :balloon: Values will automatically cascade down the notebook cells""") value = st.slider("Move the slider to change the filter value 👇", df.value.min(), df.value.max(), df.value.mean(), step = 0.3 )
마지막으로 슬라이더 값을 기준으로 필터링된 테이블을 표시합니다.
df[df["value"]>value].sort_values("value")
노트북에서 앱과 실시간으로 상호 작용할 수 있습니다. 슬라이더에서 설정한 값에 따라 필터링된 표가 변경되는 것을 확인합니다.
팁
전체 예제는 Snowflake Notebooks를 사용한 시각적 데이터 스토리 노트북의 대화형 데이터 앱 섹션을 참조하십시오.
Notebooks의 Streamlit 지원¶
st.map 또는 st.pydeck_chart Streamlit 명령을 사용하는 경우 Mapbox는 지도 콘텐츠 렌더링 시 지도 타일을 제공합니다. Mapbox는 서드 파티 애플리케이션으로, Snowflake의 외부 제공 서비스 약관 이 적용됩니다.
Notebooks에서 지원되지 않는 Streamlit 요소는 다음과 같습니다.
-
st.set_page_config
명령의page_title
,page_icon
,menu_items
속성은 지원되지 않습니다. 앵커 링크
Markdown 의 Material 아이콘
Notebooks의 Snowpark ML¶
Snowpark ML 은 Snowflake에서 Snowflake ML 의 사용자 지정 머신 러닝 모델 개발을 위한 APIs를 제공하는 Python 라이브러리입니다. Snowpark ML 을 사용하면 널리 사용되는 ML 프레임워크를 기반으로 APIs 를 사용하여 사용자 지정 모델을 개발하고, 자동으로 업데이트되는 기능을 정의하여 모델을 학습시키고, 쉽게 검색하고 재사용할 수 있도록 모델 레지스트리에 저장할 수 있습니다.
Container Runtime for ML은 고급 데이터 과학 및 머신 러닝 워크로드를 지원하기 위한 소프트웨어 및 하드웨어 옵션을 제공합니다. 컨테이너 런타임에 대한 자세한 내용은 Container Runtime for ML의 Notebooks 섹션을 참조하십시오.
중요
snowflake-ml-python
패키지와 해당 종속성은 조직의 패키지 정책 에 의해 허용되어야 합니다.
사용 예¶
Snowpark ML을 사용하려면 노트북에 snowflake-ml-python
라이브러리를 설치합니다.
노트북에서 Packages 를 선택합니다.
snowflake-ml-python 라이브러리를 찾아서 설치할 라이브러리를 선택합니다.
데이터 전처리를 위해 Snowpark ML 라이브러리를 사용하는 방법의 예는 다음과 같습니다.
import snowflake.ml.modeling.preprocessing as pp
# Initialize a StandardScaler object with input and output column names
scaler = pp.StandardScaler(
input_cols=feature_names_input,
output_cols=feature_names_input
)
# Fit the scaler to the dataset
scaler.fit(upsampled_data)
# Transform the dataset using the fitted scaler
scaled_features = scaler.transform(upsampled_data)
scaled_features
모델 훈련 및 추론에 Snowpark ML 라이브러리를 사용하는 방법의 예는 다음과 같습니다.
from snowflake.ml.modeling.ensemble import RandomForestClassifier
# Initialize a RandomForestClassifier object with input, label, and output column names
model = RandomForestClassifier(
input_cols=feature_names_input,
label_cols=label,
output_cols=output_label,
)
# Train the RandomForestClassifier model using the training set
model.fit(training)
# Predict the target variable for the testing set using the trained model
results = model.predict(testing)
팁
- Snowpark ML 사용에 대한 더 많은 예제를 보려면 다음 노트북을 참조하십시오.
Notebooks의 Snowflake ML 레지스트리¶
Snowflake Model Registry 를 사용하면 출처에 관계없이 Snowflake에서 모델과 메타데이터를 안전하게 관리할 수 있습니다. 모델 레지스트리는 머신 러닝 모델을 Snowflake의 일급 스키마 수준 오브젝트로 저장하므로 조직의 다른 사람들이 쉽게 찾아서 사용할 수 있습니다. Snowpark ML 라이브러리의 클래스를 사용하여 레지스트리를 생성하고 그 안에 모델을 저장할 수 있습니다. 모델에는 여러 버전이 있을 수 있으며, 한 버전을 기본값으로 지정할 수 있습니다.
사용 예¶
Snowflake ML 레지스트리를 사용하려면 노트북에 snowflake-ml-python
라이브러리를 설치합니다.
노트북에서 상단의 Packages 를 선택합니다.
snowflake-ml-python 패키지를 검색하고 라이브러리를 선택하여 설치합니다.
다음은 Snowflake ML 레지스트리를 사용하여 모델을 기록하는 방법의 예제입니다.
from snowflake.ml.registry import Registry
# Create a registry and log the model
native_registry = Registry(session=session, database_name=db, schema_name=schema)
# Let's first log the very first model we trained
model_ver = native_registry.log_model(
model_name=model_name,
version_name='V0',
model=regressor,
sample_input_data=X, # to provide the feature schema
)
# Add evaluation metric
model_ver.set_metric(metric_name="mean_abs_pct_err", value=mape)
# Add a description
model_ver.comment = "This is the first iteration of our Diamonds Price Prediction model. It is used for demo purposes."
# Show Models
native_registry.get_model(model_name).show_versions()
팁
Snowflake ML Registry 사용 방법의 이 엔드투엔드 예제 를 확인하십시오.
노트북의 pandas on Snowflake¶
pandas on Snowflake 를 사용하면 pandas 코드를 분산된 방식으로 Snowflake의 데이터에서 직접 실행할 수 있습니다. 가져오기 문와 코드 몇 줄만 변경하면 Snowflake의 확장성 및 보안 이점과 함께 익숙한 pandas 네이티브 환경을 그대로 사용할 수 있습니다.
pandas on Snowflake를 사용하면 훨씬 더 큰 데이터 세트로 작업할 수 있으며, pandas 파이프라인을 다른 빅데이터 프레임워크로 포팅하거나 크고 비싼 머신을 프로비저닝하는 데 드는 시간과 비용을 피할 수 있습니다. Snowpark pandas는 SQL로의 변환을 통해 Snowflake에서 기본적으로 워크로드를 실행하여 병렬화와 Snowflake의 데이터 거버넌스 및 보안 이점을 활용할 수 있습니다.
pandas on Snowflake는 Snowpark pandas API를 통해 제공되며, 이는 Snowflake 플랫폼 내에서 Python 코드의 확장 가능한 데이터 처리를 활성화하는 Snowpark Python 라이브러리의 일부로 제공됩니다.
사용 예¶
Snowpark pandas는 Snowpark Python 버전 1.17 이상에서 사용 가능합니다. Snowpark Python은 Snowflake Notebooks 환경이 사전 설치되어 제공됩니다.
Modin을 설치하려면 Packages 에서
modin
을 선택하고 버전이 0.28.1 이상인지 확인합니다.pandas 버전을 설정하려면 Packages 에서
pandas
를 선택하고 버전이 2.2.1인지 확인합니다.
Python 셀에서 Snowpark Python 및 Modin을 가져옵니다.
import modin.pandas as pd import snowflake.snowpark.modin.plugin
Snowpark 세션을 만듭니다.
from snowflake.snowpark.context import get_active_session session = get_active_session()
Snowpark Python API를 사용하여 시작합니다.
# Create a Snowpark Pandas DataFrame with sample data. df = pd.DataFrame([[1, 'Big Bear', 8],[2, 'Big Bear', 10],[3, 'Big Bear', None], [1, 'Tahoe', 3],[2, 'Tahoe', None],[3, 'Tahoe', 13], [1, 'Whistler', None],['Friday', 'Whistler', 40],[3, 'Whistler', 25]], columns=["DAY", "LOCATION", "SNOWFALL"]) # Drop rows with null values. df.dropna() # Compute the average daily snowfall across locations. df.groupby("LOCATION").mean()["SNOWFALL"]
팁
pandas on Snowflake를 사용하는 방법에 대한 자세한 예제는 pandas on Snowflake 시작하기 를 참조하십시오.
Notebooks의 Snowflake Python API¶
Snowflake Python API 은 Python을 Snowflake 워크로드와 원활하게 연결하는 통합 라이브러리입니다. 이는 최고 수준의 Python API를 사용하여 데이터 엔지니어링, Snowpark, Snowpark ML 및 애플리케이션 워크로드 전반에서 Snowflake 리소스와 상호 작용할 수 있는 포괄적인 APIs를 제공하기 위한 것입니다.
Snowflake Python API를 사용하면 Snowflake 리소스를 생성, 삭제 또는 수정하는 방식으로 관리할 수 있습니다. Python을 사용하면 Snowflake SQL 명령 으로 수행했어야 할지 모르는 작업을 수행할 수 있습니다.
노트북에서는 세션 컨텍스트 변수가 미리 구성되어 있습니다. get_active_session
메서드를 사용하여 세션 컨텍스트 변수를 가져올 수 있습니다.
from snowflake.snowpark.context import get_active_session session = get_active_session()
Snowflake Python API 를 사용할 Root
오브젝트를 만듭니다.
from snowflake.core import Root api_root = Root(session)
다음은 Python API를 사용하여 데이터베이스와 스키마를 만드는 방법의 예제입니다.
# Create a database and schema by running the following cell in the notebook: database_ref = api_root.databases.create(Database(name="demo_database"), mode="orreplace") schema_ref = database_ref.schemas.create(Schema(name="demo_schema"), mode="orreplace")팁
Snowflake의 Python API 를 사용하는 방법에 대한 자세한 내용은 Github의 Python API 노트북 예제를 사용하여 Snowflake 오브젝트 만들기 섹션을 참조하십시오.