노트북으로 Snowflake 체험하기

Snowflake Notebooks 는 다른 Snowflake 기능과 함께 사용할 수 있는 개발 환경입니다. 이 항목에서는 노트북 내에서 다른 Snowflake 기능을 활용하는 방법을 보여 드립니다.

노트북의 Snowpark Python

Snowpark 라이브러리 는 데이터 파이프라인에서 데이터를 쿼리하고 처리하기 위한 직관적인 API를 제공합니다. Snowpark 라이브러리를 사용하면 사용자는 애플리케이션 코드가 실행되는 시스템으로 데이터를 옮기지 않고도 Snowflake에서 데이터를 처리하는 애플리케이션을 빌드할 수 있습니다. 저장 프로시저를 작성하고 Snowflake에서 해당 프로시저를 작업으로 예약하여 데이터 변환과 처리를 자동화할 수도 있습니다.

Snowpark를 사용하면 노트북의 Python 셀에 Snowpark 코드를 작성하여 Snowflake에서 대규모로 데이터를 쿼리하고 이를 처리할 수 있습니다.

사용 예

Snowflake Notebooks 환경에서 Snowpark Python이 사전 설치되어 제공됩니다. 다음 예제는 노트북의 Snowpark 라이브러리를 사용하여 CSV 파일과 Snowflake 테이블을 읽고 그 내용을 출력으로 표시하는 예제입니다.

  1. 노트북에서 키보드 단축키 를 사용하거나 + Python 를 선택해 Python 셀을 추가합니다. Snowflake Notebooks 및 Snowpark는 모두 Python 3.9를 지원합니다.

  2. Snowpark 세션을 설정합니다. 노트북에서는 세션 컨텍스트 변수가 미리 구성되어 있습니다. get_active_session 메서드를 사용하여 세션 컨텍스트 변수를 가져올 수 있습니다.

    from snowflake.snowpark.context import get_active_session
    session = get_active_session()
    
    Copy
  3. 스테이지 위치에서 CSV 파일을 Snowpark DataFrame에 로드하려면 Snowpark를 사용합니다. 이 예제에서는 이름이 tastybyte_stage 인 스테이지를 사용합니다.

    df = session.read.options({"infer_schema":True}).csv('@TASTYBYTE_STAGE/app_order.csv')
    
    Copy
  4. 기존 Snowflake 테이블 app_order 를 Snowpark DataFrame에 로드합니다.

    df = session.table("APP_ORDER")
    
    Copy
  5. Snowpark DataFrame을 표시합니다.

    df
    
    Copy

참고

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을 사용하여 대화형 데이터 앱을 만듭니다.

  1. 필요한 라이브러리 가져오기

    import streamlit as st
    import pandas as pd
    
    Copy
  2. 먼저 앱에 대한 샘플 데이터를 만듭니다.

    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
    
    Copy
  3. 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 )
    
    Copy
  4. 마지막으로 슬라이더 값을 기준으로 필터링된 테이블을 표시합니다.

    df[df["value"]>value].sort_values("value")
    
    Copy

노트북에서 앱과 실시간으로 상호 작용할 수 있습니다. 슬라이더에서 설정한 값에 따라 필터링된 표가 변경되는 것을 확인합니다.

전체 예제는 Snowflake Notebooks를 사용한 시각적 데이터 스토리 노트북의 대화형 데이터 앱 섹션을 참조하십시오.

Notebooks의 Streamlit 지원

st.map 또는 st.pydeck_chart Streamlit 명령을 사용하는 경우 Mapbox는 지도 콘텐츠 렌더링 시 지도 타일을 제공합니다. Mapbox는 서드 파티 애플리케이션으로, Snowflake의 외부 제공 서비스 약관 이 적용됩니다.

Notebooks에서 지원되지 않는 Streamlit 요소는 다음과 같습니다.

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 라이브러리를 설치합니다.

  1. 노트북에서 Packages 를 선택합니다.

  2. 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
Copy

모델 훈련 및 추론에 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)
Copy

Snowpark ML 사용에 대한 더 많은 예제를 보려면 다음 노트북을 참조하십시오.

Notebooks의 Snowflake ML 레지스트리

Snowflake Model Registry 를 사용하면 출처에 관계없이 Snowflake에서 모델과 메타데이터를 안전하게 관리할 수 있습니다. 모델 레지스트리는 머신 러닝 모델을 Snowflake의 일급 스키마 수준 오브젝트로 저장하므로 조직의 다른 사람들이 쉽게 찾아서 사용할 수 있습니다. Snowpark ML 라이브러리의 클래스를 사용하여 레지스트리를 생성하고 그 안에 모델을 저장할 수 있습니다. 모델에는 여러 버전이 있을 수 있으며, 한 버전을 기본값으로 지정할 수 있습니다.

사용 예

Snowflake ML 레지스트리를 사용하려면 노트북에 snowflake-ml-python 라이브러리를 설치합니다.

  1. 노트북에서 상단의 Packages 를 선택합니다.

  2. 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()
Copy

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 환경이 사전 설치되어 제공됩니다.

  1. Modin을 설치하려면 Packages 에서 modin 을 선택하고 버전이 0.28.1 이상인지 확인합니다.

  2. pandas 버전을 설정하려면 Packages 에서 pandas 를 선택하고 버전이 2.2.1인지 확인합니다.

Python 셀에서 Snowpark Python 및 Modin을 가져옵니다.

import modin.pandas as pd
import snowflake.snowpark.modin.plugin
Copy
  1. Snowpark 세션을 만듭니다.

    from snowflake.snowpark.context import get_active_session
    session = get_active_session()
    
    Copy
  2. 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"]
    
    Copy

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()
Copy

Snowflake Python API 를 사용할 Root 오브젝트를 만듭니다.

from snowflake.core import Root
api_root = Root(session)
Copy

다음은 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")
Copy

Snowflake의 Python API 를 사용하는 방법에 대한 자세한 내용은 Github의 Python API 노트북 예제를 사용하여 Snowflake 오브젝트 만들기 섹션을 참조하십시오.