PythonワークシートでSnowparkコードを記述する¶
Pythonワークシートに Snowpark コードを記述して、 Snowsight でSnowpark Pythonを使用してデータを処理します。Pythonワークシートにコードを記述することで、依存ライブラリをインストールする必要なくSnowflakeで開発とテストを実行できます。
Pythonワークシートで開発するには、次の手順を実行します。
たとえば、Snowflakeのステージまたはデータベースオブジェクトからデータを抽出し、データを変換し、変換されたデータをSnowflakeに保存するコードをPythonワークシートに記述できます。その後、 そのコードをストアドプロシージャに変換し、データパイプラインを構築できます。すべてSnowflakeから移動することなく行えます。
このトピックの内容:
Pythonのワークシートについて¶
Pythonワークシートを使用すると、 Snowsight でSnowpark Pythonを使用して、データの操作と変換を実行できます。 Anacondaで利用可能なパッケージ を使用するか、ステージから独自のPythonファイルをインポートしてスクリプトで使用できます。
Pythonワークシートを実行した後、返された結果と出力をスクリプトで確認します。結果は、コードに応じて、文字列、バリアント、またはテーブルとして表示されます。 Pythonワークシートの実行 をご参照ください。
注釈
Pythonワークシートはローカル開発環境ではなくSnowflake内で実行されるため、 session.add_import
を使用してPythonコードが依存するファイルを追加したり、 session.add_packages
または session.add_requirements
を使用してPythonコードで使用する必要があるパッケージを追加したりすることはできません。代わりに、これらのファイルをステージに追加して、コードで参照します。 ステージからワークシートにPythonファイルを追加する をご参照ください。
Pythonワークシートには次の制限があります。
WARN より低いログレベルは、デフォルトではPythonワークシートの Output に表示されません。代わりに、
logging
モジュールなどのログライブラリを使用して、ログに記録されるメッセージのレベルを設定してください。ログに記録したすべてのメッセージが出力に表示されます。ワークシート内のブレークポイントやPythonコードの一部のみの実行はサポートされていません。
画像やウェブページはサポートされていません。Pythonコードによって生成された画像またはウェブページは、Pythonワークシートに表示できません。
Snowpark PythonはPython 3.8を使用します。
これらのオプションでサポートが必要な場合は、代わりにローカル開発環境の使用を検討してください。 Snowpark Pythonの開発環境の設定 をご参照ください。
Pythonワークシートの前提条件¶
Pythonワークシートを使用するには、次を行う必要があります。
Snowsight でAnaconda利用規約を確認して同意します。 はじめるにあたり をご参照ください。
(オプション)Pythonワークシートで使用する、 Anacondaに含まれていない Python ファイルとパッケージを名前付きステージに追加します。 ステージからワークシートにPythonファイルを追加する をご参照ください。
Pythonワークシートに使用するウェアハウスを選択します。Snowflakeは、開発用にXSサイズのウェアハウスを使用することをお勧めします。非常に大きなSnowparkワークロードを実行している場合は、 Snowparkに最適化されたウェアハウス を使用します。ウェアハウスサイズの詳細については、 ウェアハウスサイズ をご参照ください。
ステージからワークシートにPythonファイルを追加する¶
Snowflakeでは、 Snowflake conda チャンネル のAnacondaパッケージがPythonワークシートに含まれています。PythonワークシートでAnacondaに含まれているもの以外のPythonファイルまたはパッケージを使用する場合は、ファイルをSnowflakeの名前付きステージにアップロードしてから、Pythonワークシートのパッケージのリストに追加する必要があります。
デフォルトでは含まれていないワークシートでPythonパッケージを使用するには、次の手順を実行します。
Snowsight にサインインします。
Worksheets を開きます。
+ » Python Worksheet を選択します。
データベースとスキーマを選択します。
Packages » Stage Packages を選択します。
ステージ内のパッケージへのパスを入力します。
ワークシート用に選択したデータベースとスキーマにパッケージが配置されているステージが含まれている場合、非修飾名を使用してステージを参照できます。たとえば、
@YourStage/path/to/package.py
です。別のデータベースおよびスキーマでステージを参照するには、ステージの名前を完全修飾します。たとえば、
@Database.Schema.Stage/path/to/package.py
です。
インストール済みパッケージのリストにパッケージを追加するには、 Import を選択します。その後、
import
ステートメントを使用して、Pythonワークシートでパッケージを使用できます。
注釈
ワークシートに追加するパッケージは、そのワークシートでのみ使用できます。別のPythonワークシートで同じパッケージを使用する場合は、次の手順に従ってパッケージをそのワークシートに追加します。
詳細については、 コードで依存関係を利用できるようにする方法 をご参照ください。
Pythonワークシートで開発を開始する¶
ワークシートを開いて開発環境を構成するには、次の手順を実行します。
Snowsight にサインインします。
Worksheets を開きます。
+ » Python Worksheet を選択します。
データベースとスキーマを選択します。
ワークシートの実行に使用するウェアハウスを選択します。ユーザーのデフォルトのウェアハウスがある場合は、事前に選択されています。
Pythonワークシートでは、Python ッケージを読み込んでPythonコードを実行するために実行中のウェアハウスが必要です。
(オプション) Packages を選択してPythonライブラリを追加します。
numpy、pandas、requests、urllib3などの Anacondaに含まれる パッケージはすでにインストールされています。
scikit-learnなど、ワークシートにインストールして使用する他のパッケージを検索します。検索結果でパッケージを選択し、オプションでデフォルトで選択されているパッケージバージョンを変更します。自分がインストールしたパッケージがパッケージリストの一番上に表示されます。
Stage Packages を選択し、ステージとパッケージのファイルパスを指定してから、 Import を選択して、独自のパッケージとPythonファイルを追加します。
Pythonライブラリをワークシートに追加する場合は、
import
ステートメントを使用してライブラリをワークシートにインポートするようにコードを更新します。サンプルPythonコードを実行して、構成を検証します。
エラーメッセージまたはコードからの戻り値が Results セクションに表示されます。ログメッセージを表示するには、 Output を選択します。 Pythonワークシートの実行 をご参照ください。
PythonワークシートでSnowparkコードを記述する¶
Pythonワークシートを使用して開発を開始する 手順に従った後、サンプルコードを独自のコードに置き換えることができます。
ハンドラー関数内にSnowpark Pythonコードを記述します。
import snowflake.snowpark as snowpark
def main(session: snowpark.Session):
# your code goes here
デフォルトのハンドラー関数は main
ですが、ワークシートの Settings で変更できます。
ボイラープレートコードで提供される session
オブジェクトを使用して、Snowpark API ライブラリでSnowflakeのデータにアクセスします。たとえば、テーブルの DataFrame を作成したり、SQL ステートメントを実行したりできます。 Python用Snowpark開発者ガイド をご参照ください。
入力すると、Pythonメソッド、定義済み変数、データベースオブジェクトなどのオートコンプリートが表示されます。一部のサードパーティパッケージまたはステージからインポートされたファイルのオートコンプリートは表示されません。Pythonワークシートには、構文の強調表示とメソッドパラメーターのガイダンスも含まれています。ワークシートの Settings でリンティングと行の折り返しを有効にできます。
異なるデータ型の結果を返す¶
Pythonコードを記述するときは、コード内の return
ステートメントによって返されるデータの型を考慮し、ワークシートが結果を返す方法を調整してください。デフォルトでは、プレースホルダーコードが DataFrame を返すため、Pythonワークシートの戻り値の型はTable()です。
Pythonコードが返す内容に応じて、ワークシートの設定を変更して、出力を別の方法で表示することができます。
ハンドラー関数が
DataFrame
を返す場合は、デフォルトの戻り値の型 Table() を使用します。collect
メソッドなどを使用して、ハンドラー関数がRow
オブジェクトのリストを返す場合は、戻り値の型を Variant に変更します。ハンドラー関数が
return "Hello Python"
などの文字列を返す場合、または文字列としてキャストする値を返す場合は、戻り値の型を String に変更します。count
メソッドなどでハンドラー関数が整数を返す場合は、 Variant または String の戻り型を使用します。
一部の DataFrame メソッドの戻り値の型の詳細については、 DataFrame を評価するアクションの実行 をご参照ください。
別の型の結果を返すようにワークシートの設定を更新するには、次の手順を実行します。
Snowsight にサインインします。
Worksheets を開きます。
結果をテーブルとして表示するPythonワークシートを開きます。
ワークシートの実行に使用するウェアハウスを選択します。ユーザーのデフォルトのウェアハウスがある場合は、事前に選択されています。ウェアハウスが実行中であることを確認します。
Settings を選択し、 Return Type にはハンドラー関数によって返される型を選択します。
Pythonワークシートを実行します。
Results パネルで結果を確認します。
Pythonワークシートの実行¶
Pythonワークシートを作成 したら、 Run を選択してPythonワークシートを実行します。ワークシートを実行すると、Pythonワークシートのすべてのコードが実行されます。コードの部分実行または増分実行はサポートされていません。
コードによって生成された出力を確認する¶
Pythonワークシートの Output パネルで、Pythonコードの標準出力(stdout)または標準エラー(stderr)メッセージを確認できます。
Output パネルでは、次のタイプの関数からの出力を確認できます。
print()
など、コンソールに書き込む関数。Snowpark Pythonの DataFrame クラスの
show
メソッドなど、DataFrame を出力する関数。
注釈
出力は、コードの実行時にストリームに表示されるのではなく、すべてのPythonプロセスの実行が終了した後に表示されます。
ログ出力は仮ステージに書き込まれ、次が true である場合にのみキャプチャされます。
ワークシートのデータベースとスキーマを選択している。
選択したデータベースは共有から作成されたものではなかった場合。
選択したデータベースとスキーマに対する USAGE 権限を持つロールを使用して、ワークシートを実行する。