SQL と Python を使ったストアドプロシージャの記述

ハンドラーが Python でコーディングされたストアドプロシージャを書くことができます。ハンドラー内で Snowpark ライブラリ のAPIs を使用することで、Snowflake テーブルに対してクエリ、更新、その他の作業を実行することができます。

ストアドプロシージャを使用すると、Snowflakeウェアハウスをコンピュートフレームワークとして使用して、Snowflake内でデータパイプラインを構築して実行できます。 Python用Snowpark API を使用してストアドプロシージャを記述し、データパイプラインを構築します。これらのストアドプロシージャの実行をスケジュールするには、 タスク を使用します。

機械学習モデルとSnowpark Pythonに関する情報は、 Snowpark Pythonを使用した機械学習モデルのトレーニング を参照してください。

Python 用のストアドプロシージャは、Python ワークシート を使用するか、ローカル開発環境を使用して記述することができます。

ハンドラーコードの実行時にログをキャプチャし、データをトレースできます。詳細については、 ロギング、トレース、メトリクス をご参照ください。

注釈

匿名プロシージャの作成と呼び出しの両方を実行するには、 CALL (匿名プロシージャでの場合) を使用します。匿名プロシージャの作成と呼び出しには、 CREATE PROCEDURE スキーマ権限を持つロールは必要ありません。

ストアドプロシージャをローカルに記述するための前提条件

ローカル開発環境でPythonストアドプロシージャを作成するには、次の前提条件を満たす必要があります。

  • バージョン0.4.0または最新バージョンのSnowparkライブラリを使用する必要があります。

  • Snowpark Python が必要なサードパーティの依存関係をロードできるように、Anaconda Packages を有効にします。 Anacondaのサードパーティパッケージの使用 をご参照ください。

  • サポートされているPythonのバージョンは次のとおりです。

    • 3.9

    • 3.10

    • 3.11

次に、Snowparkライブラリを使用するように開発環境をセットアップします。 Snowparkの開発環境の設定 をご参照ください。

Anacondaのサードパーティパッケージの使用

Pythonストアドプロシージャを作成するときにインストールするAnacondaパッケージを指定できます。Anacondaのサードパーティパッケージのリストを表示するには、 Anaconda Snowflakeチャネル をご参照ください。これらのサードパーティパッケージは、Anacondaによって構築および提供されています。Snowflake condaチャネルは、Anacondaの利用規約の補足組み込みソフトウェア条項に基づいて、無料でローカルテストおよび開発に使用できます。

制限については、 Python ストアドプロシージャの制限 をご参照ください。

はじめるにあたり

Snowflake内でAnacondaが提供するパッケージの使用を開始する前に、 外部製品規約 に同意する必要があります。

注釈

条件を受け入れるには、 ORGADMIN ロールを使用する必要があります。お客様のSnowflakeアカウントでは、 External Offerings Terms に一度だけ同意する必要があります。ORGADMIN ロールにアクセスできない場合は、 アカウントのORGADMINロールの有効化 を参照してください。

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

  2. Admin » Billing & Terms を選択します。

  3. Anaconda セクションで、 Enable を選択します。

  4. Anaconda Packages ダイアログで、リンクをクリックして 外部製品規約ページ を確認します。

  5. 規約に同意する場合は、 Acknowledge & Continue を選択します。

外部提供条件 に同意しようとした際にエラーが発生した場合、ユーザープロファイルの姓、名、電子メールアドレスなどの情報が不足していることが原因である可能性があります。管理者権限がある場合は、 Snowsight を使用してプロファイルを更新する ユーザープロファイルにユーザー詳細を追加する を参照してください。または、アカウント管理者に連絡して アカウントを更新してください

注釈

上記のSnowflake External Offerings Terms(外部オファー規約) に同意しない場合でも、ストアドプロシージャを使用できますが、次の制限があります。

  • Anacondaのサードパーティパッケージを使用することはできません。

  • ストアドプロシージャのパッケージとしてSnowpark Pythonを指定することはできますが、特定のバージョンを指定することはできません。

  • DataFrame オブジェクトを操作する場合、 to_pandas メソッドを使用することはできません。

パッケージの表示と使用

Information Schemaの PACKAGES ビューをクエリすると、使用可能なすべてのパッケージとそのバージョン情報を表示できます。

SELECT * FROM information_schema.packages WHERE LANGUAGE = 'python';
Copy

詳細情報については、Snowflake Python UDF ドキュメントの サードパーティパッケージの使用 を参照してください。

ストアドプロシージャの呼び出し

ストアドプロシージャを作成したら、以下の方法で呼び出すことができます。