ノートブックで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ノートブックは、Snowparkでサポートされているのと同じPythonバージョン、Python 3.9をサポートしています。

  2. Snowparkセッションの設定 ノートブックでは、セッションコンテキスト変数は事前に設定されています。セッションコンテキスト変数を取得するには、 get_active_session メソッドを使用します。

    from snowflake.snowpark.context import get_active_session
    session = get_active_session()
    
    Copy
  3. Snowparkを使って、CSVファイルをステージングされた場所からSnowpark DataFrameに読み込みます。この例では、 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 環境の外では、DataFrame をプリントアウトするために df.show() を呼び出す必要があります。 Snowflake Notebooks、 DataFrames は、 df がプリントアウトされるときに積極的に評価されます。DataFrameは、インタラクティブなStreamlit DataFrameディスプレイ(st.dataframe)として出力されます。10000行を超えるDataFramesの場合、表示される最大行数は10000行です。

Snowparkの制限事項

  • SnowflakeノートブックはSnowparkセッションを作成するので、Snowparkセッションクラスで利用可能なメソッドのほとんどを使用することができます。ただし、ノートブックはローカルの開発環境ではなくSnowflakeの内部で実行されるため、以下の方法は使用できません:

    • session.add_import

    • session.add_packages

    • session.add_requirements

  • Snowpark Pythonのいくつかの操作は、SPROCsで機能しません。操作の包括的なリストについては、 制限事項 をご参照ください。

Tip

以下は、Snowparkの使用例に関するノートブックへのリンクです。

注釈

これらのクイックスタートはあくまで例として示したものです。例に従った場合、Snowflakeが所有または提供していないサードパーティのデータ、製品、またはサービスに対する追加の権利が必要になる場合があります。Snowflakeはこの例の正確性を保証するものではありません。

ノートのストリームリット

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

ノートブックからリアルタイムでアプリを操作できます。スライダーで設定した値に基づいて、フィルタリングされた表が変化するのを確認してください。

Tip

包括的な例については、 Snowflake Notebooksによるビジュアルデータストーリー ノートブックのインタラクティブなデータアプリのセクションをご参照ください。

ノートブックでのStreamlitサポート

st.map または st.pydeck_chart Streamlitコマンドを使用する場合、Mapboxはマップコンテンツのレンダリング時にマップタイルを提供します。Mapboxはサードパーティのアプリケーションであり、Snowflakeの 外部製品規約 が適用されます。

一部のStreamlit要素はサポートされていません:

ノートブックの Snowflake Copilot

Snowflake Copilot は、堅牢なデータガバナンスを維持しながらデータ分析を簡素化し、既存のSnowflakeワークフローにシームレスに統合する LLM を搭載したアシスタントです。

Snowsight の Snowflake Notebooks でCopilotと対話することができます。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 ML 用と、Snowflakeでのカスタム機械学習モデル開発用の 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

Tip

Snowpark ML の使用例については、以下のノートブックをご参照ください。

ノートブックのMLレジストリ

Snowflakeモデルレジストリ により、お客様はSnowflakeで、モデルとそのメタデータを原点に関係なく安全に管理することができます。モデルレジストリは、機械学習モデルをSnowflakeのファーストクラスのスキーマレベルオブジェクトとして格納することにより、組織内の他の人たちが容易に見つけて使用できるようにします。Snowpark MLライブラリのクラスを使用してレジストリを作成し、そこにモデルを格納できます。モデルは複数のバージョンを持つことができ、1つのバージョンをデフォルトとして指定することができます。

使用例

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

Tip

このビデオ は、Snowflake ML レジストリの使用方法のエンドツーエンドの例を示しています。

ノートブックのpandas on Snowflake

pandas on Snowflake により、Snowflakeのデータ上で直接pandasコードを分散実行することができます。importステートメントと数行のコードを変更するだけで、Snowflakeのスケーラビリティとセキュリティの利点を備えたpandasネイティブのエクスペリエンスを得ることができます。

pandas on Snowflakeにより、より大規模なデータセットを扱うことができ、pandasパイプラインを他のビッグデータフレームワークに移植したり、より大規模で高価なマシンを使用したりする時間やコストを避けることができます。Snowflakeのワークロードをネイティブに実行し、SQLにトランスパイルすることで、並列化、データガバナンス、セキュリティといったSnowflakeの利点を活用することができます。

pandas on Snowflakeは、Snowpark Pythonライブラリの一部としてSnowpark pandas API を通じて提供され、Snowflakeプラットフォーム内で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

Tip

pandas on Snowflake API の使用方法の詳細な例については、 pandas on Snowflake入門 をご参照ください。