노트북으로 Snowflake 체험하기

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

노트북의 Snowpark Python

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

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

사용 예

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

  1. 노트북에서 Python 셀을 추가하려면 키보드 단축키 를 사용하거나 + Python 을 선택합니다. Snowflake Notebooks는 Snowpark와 동일한 Python 버전인 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)로 인쇄됩니다. 행이 10,000개 이상인 DataFrames의 경우 표시되는 최대 행 수는 10,000개 행입니다.

Snowpark 제한 사항

  • Snowflake Notebook은 Snowpark 세션을 생성하므로 Snowpark 세션 클래스에서 사용 가능한 대부분의 메서드를 사용할 수 있습니다. 하지만 노트북은 로컬 개발 환경이 아닌 Snowflake 내부에서 실행되므로 다음 메서드를 사용할 수 없습니다.

    • session.add_import

    • session.add_packages

    • session.add_requirements

  • 일부 Snowpark Python 연산자는 SPROCs에서 작동하지 않습니다. 전체 작업 목록은 제한 사항 섹션을 참조하십시오.

다음은 Snowpark 사용에 대한 더 많은 예제가 있는 노트북에 대한 링크입니다.

참고

이러한 데모는 예제로만 보여주는 것이며, 예제를 따라 실습하려면 Snowflake가 소유하거나 제공하지 않는 서드 파티 데이터, 제품 또는 서비스에 대한 권한이 추가로 필요할 수 있습니다. Snowflake는 이러한 예제의 정확성을 보장하지 않습니다.

노트북의 Streamlit

Streamlit 은 머신 러닝과 데이터 과학을 위한 사용자 지정 웹 앱을 쉽게 만들고 공유할 수 있게 해주는 오픈 소스 Python 라이브러리입니다. Streamlit을 사용하여 노트북에서 직접 대화형 데이터 애플리케이션을 구축할 수 있습니다. 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를 사용한 시각적 데이터 스토리 노트북의 대화형 데이터 앱 섹션을 참조하십시오.

노트북의 Streamlit 지원

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

일부 Streamlit 요소는 지원되지 않습니다.

노트북의 Snowflake Copilot

Snowflake Copilot 은 강력한 데이터 거버넌스를 유지하면서 데이터 분석을 간소화하고 기존 Snowflake 워크플로에 원활하게 통합할 수 있는 LLM 기반 어시스턴트입니다.

Snowflake Notebooks 의 Copilot과 Snowsight 에서 상호작용할 수 있습니다. Copilot 패널을 사용하여 질문을 입력하면 Snowflake Copilot 가 답변을 제공합니다. 노트북에서 추천 SQL 쿼리를 실행할 수 있습니다.

사용 예

노트북에서 Snowflake Copilot 사용을 시작하려면 다음 단계를 따르십시오.

  1. 새로운 노트북을 만들거나 기존 노트북을 엽니다.

  2. 노트북의 오른쪽 하단 모서리에서 Ask Copilot 을 선택합니다. 노트북의 오른쪽에 Snowflake Copilot 패널이 열립니다.

  3. 현재 노트북에 대한 데이터베이스와 스키마가 선택되었는지 확인합니다. 그렇지 않은 경우 Snowflake Copilot 메시지 상자 아래의 선택기를 사용하여 선택할 수 있습니다.

  4. 메시지 상자에 질문을 입력한 다음 보내기 아이콘을 선택하거나 Enter 를 눌러 제출합니다. Snowflake Copilot 이 패널에 답변을 제공합니다.

  5. Snowflake Copilot 의 응답에 SQL 문이 포함된 경우:

    • Run 을 선택하여 쿼리를 실행합니다. 이렇게 하면 쿼리가 노트북에 추가되고 실행됩니다.

    • 쿼리를 실행하기 전에 Add 를 선택하여 쿼리를 편집합니다. 이렇게 하면 쿼리가 노트북에 추가됩니다.

Snowflake Copilot 에 대해 자세히 알아보려면 Snowflake Copilot 사용하기 섹션을 참조하십시오.

노트북의 Snowpark ML

Snowpark ML 은 Snowflake에서 Snowflake ML 의 사용자 지정 머신 러닝 모델 개발을 위한 APIs를 제공하는 Python 라이브러리입니다. Snowpark ML을 사용하면 널리 사용되는 ML 프레임워크를 기반으로 APIs를 사용하여 사용자 지정 모델을 개발하고, 자동으로 업데이트되는 기능을 정의하여 훈련하고, 모델 레지스트리에 저장하여 쉽게 검색하고 재사용할 수 있습니다.

중요

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 사용에 대한 더 많은 예제를 보려면 다음 노트북을 참조하십시오.

노트북의 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 레지스트리를 사용하는 방법에 대한 처음부터 끝까지의 예제를 보여줍니다.

노트북의 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 을 선택하여 Modin을 설치해야 합니다.

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 API를 사용하는 방법에 대한 자세한 예제는 pandas on Snowflake 시작하기 섹션을 참조하십시오.