PythonワークシートでSnowparkコードを記述する

Pythonワークシートに Snowpark コードを記述して、 Snowsight でSnowpark Pythonを使用してデータを処理します。Pythonワークシートにコードを記述することで、依存ライブラリをインストールする必要なくSnowflakeで開発とテストを実行できます。

Pythonワークシートで開発するには、次の手順を実行します。

  1. Snowflakeでロールとパッケージを準備します

  2. 開発用のワークシートを設定します

  3. PythonワークシートでSnowparkコードを記述します

  4. 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ワークシートを使用するには、次を行う必要があります。

ステージからワークシートにPythonファイルを追加する

Snowflakeでは、 Snowflake conda チャンネル のAnacondaパッケージがPythonワークシートに含まれています。PythonワークシートでAnacondaに含まれているもの以外のPythonファイルまたはパッケージを使用する場合は、ファイルをSnowflakeの名前付きステージにアップロードしてから、Pythonワークシートのパッケージのリストに追加する必要があります。

デフォルトでは含まれていないワークシートでPythonパッケージを使用するには、次の手順を実行します。

  1. Snowsight にサインインします。

  2. Worksheets を開きます。

  3. + » Python Worksheet を選択します。

  4. データベースとスキーマを選択します。

  5. Packages » Stage Packages を選択します。

  6. ステージ内のパッケージへのパスを入力します。

    • ワークシート用に選択したデータベースとスキーマにパッケージが配置されているステージが含まれている場合、非修飾名を使用してステージを参照できます。たとえば、 @YourStage/path/to/package.py です。

    • 別のデータベースおよびスキーマでステージを参照するには、ステージの名前を完全修飾します。たとえば、 @Database.Schema.Stage/path/to/package.py です。

  7. インストール済みパッケージのリストにパッケージを追加するには、 Import を選択します。その後、 import ステートメントを使用して、Pythonワークシートでパッケージを使用できます。

注釈

ワークシートに追加するパッケージは、そのワークシートでのみ使用できます。別のPythonワークシートで同じパッケージを使用する場合は、次の手順に従ってパッケージをそのワークシートに追加します。

詳細については、 コードで依存関係を利用できるようにする方法 をご参照ください。

Pythonワークシートで開発を開始する

ワークシートを開いて開発環境を構成するには、次の手順を実行します。

  1. Snowsight にサインインします。

  2. Worksheets を開きます。

  3. + » Python Worksheet を選択します。

  4. データベースとスキーマを選択します。

  5. ワークシートの実行に使用するウェアハウスを選択します。ユーザーのデフォルトのウェアハウスがある場合は、事前に選択されています。

    Pythonワークシートでは、Python ッケージを読み込んでPythonコードを実行するために実行中のウェアハウスが必要です。

  6. (オプション) Packages を選択してPythonライブラリを追加します。

    • numpy、pandas、requests、urllib3などの Anacondaに含まれる パッケージはすでにインストールされています。

    • scikit-learnなど、ワークシートにインストールして使用する他のパッケージを検索します。検索結果でパッケージを選択し、オプションでデフォルトで選択されているパッケージバージョンを変更します。自分がインストールしたパッケージがパッケージリストの一番上に表示されます。

    • Stage Packages を選択し、ステージとパッケージのファイルパスを指定してから、 Import を選択して、独自のパッケージとPythonファイルを追加します。

    Pythonライブラリをワークシートに追加する場合は、 import ステートメントを使用してライブラリをワークシートにインポートするようにコードを更新します。

  7. サンプルPythonコードを実行して、構成を検証します。

エラーメッセージまたはコードからの戻り値が Results セクションに表示されます。ログメッセージを表示するには、 Output を選択します。 Pythonワークシートの実行 をご参照ください。

PythonワークシートでSnowparkコードを記述する

Pythonワークシートを使用して開発を開始する 手順に従った後、サンプルコードを独自のコードに置き換えることができます。

ハンドラー関数内にSnowpark Pythonコードを記述します。

import snowflake.snowpark as snowpark

def main(session: snowpark.Session):
    # your code goes here
Copy

デフォルトのハンドラー関数は 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 を評価するアクションの実行 をご参照ください。

別の型の結果を返すようにワークシートの設定を更新するには、次の手順を実行します。

  1. Snowsight にサインインします。

  2. Worksheets を開きます。

  3. 結果をテーブルとして表示するPythonワークシートを開きます。

  4. ワークシートの実行に使用するウェアハウスを選択します。ユーザーのデフォルトのウェアハウスがある場合は、事前に選択されています。ウェアハウスが実行中であることを確認します。

  5. Settings を選択し、 Return Type にはハンドラー関数によって返される型を選択します。

  6. Pythonワークシートを実行します。

  7. Results パネルで結果を確認します。

Pythonワークシートの実行

Pythonワークシートを作成 したら、 Run を選択してPythonワークシートを実行します。ワークシートを実行すると、Pythonワークシートのすべてのコードが実行されます。コードの部分実行または増分実行はサポートされていません。

コードによって生成された出力を確認する

Pythonワークシートの Output パネルで、Pythonコードの標準出力(stdout)または標準エラー(stderr)メッセージを確認できます。

Output パネルでは、次のタイプの関数からの出力を確認できます。

  • print() など、コンソールに書き込む関数。

  • Snowpark Pythonの DataFrame クラスの show メソッドなど、DataFrame を出力する関数。

注釈

出力は、コードの実行時にストリームに表示されるのではなく、すべてのPythonプロセスの実行が終了した後に表示されます。

ログ出力は仮ステージに書き込まれ、次が true である場合にのみキャプチャされます。

  • ワークシートのデータベースとスキーマを選択している。

  • 選択したデータベースは共有から作成されたものではなかった場合。

  • 選択したデータベースとスキーマに対する USAGE 権限を持つロールを使用して、ワークシートを実行する。

Pythonワークシートのクエリ履歴を確認する

Pythonワークシートが Snowsight で実行されると、匿名のストアドプロシージャがコードを実行し、コード内のSnowparkコマンドを実行するクエリを生成します。

Snowsight の Query History ページを使用して、実行されたクエリを確認できます。 クエリ履歴 をご参照ください。

たとえば、ワークシートを実行した後、次の操作を実行して、実行されたクエリを確認できます。

  1. ワークシートの Results を確認します。

  2. ワークシートの Query Details で、 More options » Copy Query ID を選択します

  3. Worksheets を選択して、ワークシートのリストに戻ります。

  4. Activity » Query History を選択します。

  5. Query History ページで、Pythonワークシートのクエリのみを表示します。

    1. Filters を選択し、 Query ID オプションを有効にします。

    2. Pythonワークシートのクエリ ID を入力します。

    3. Apply Filters を選択します。

  6. ワークシートに対して実行されたクエリを確認します。