Snowflake Python API: PythonによるSnowflakeオブジェクトの管理¶
Snowflake Python API は、すべてのSnowflakeワークロードで統一されたPython API であり、データエンジニアリング、Snowpark、およびクライアントアプリケーションのワークロードにわたるすべてのSnowflakeリソースに APIs を提供することを目的としています。
Snowflake Python API を使用して、Snowflakeリソースの作成、削除、変更などの操作を行うことができます。Pythonを使用して、Snowflakeの SQL コマンド で行うようなタスクを実行できます。
Snowflake Python API では、現在、次のSnowflakeオブジェクトを管理できます。
タスク を使用して、SQL ステートメント、プロシージャ呼び出し、および Snowflake スクリプト のロジックを実行できます。
詳細については、 PythonによるSnowflakeタスクと DAGs の管理 をご参照ください。
コンピュートプール、イメージリポジトリ、サービスなど、 Snowpark Container Services のリソース。
詳細については、 Pythonを使用したSnowpark Container Servicesの管理 をご参照ください。
Snowflake Python APIを使用するための入門チュートリアルについては、 クイックスタート: Snowflake Python API 入門 をご参照ください。
例¶
次の例のコードは、 my_task
というタスクをを実行します。このコードでは、構成ファイルで定義された接続パラメーターを使用して Snowflake への接続を作成します。出来上がった Session
オブジェクトを使って、コードは API のタイプとメソッドを使う Root
オブジェクトを作成します。API を使って、コードは my_task
を表す Task
オブジェクトを作成します。 TaskResource
オブジェクト task_res
を使って、コードはタスクを実行します。
API で実行できるタスク関連のアクションの詳細については、 PythonによるSnowflakeタスクと DAGs の管理 をご参照ください。
from snowflake.core import Root
from snowflake.core.task import Task
from snowflake.snowpark import Session
session = Session.builder.config("connection_name", "myconnection").create()
root = Root(session)
tasks = root.databases["mydb"].schemas["myschema"].tasks
task_res = tasks['my_task']
task_res.execute()
制限事項¶
Snowflake Python API は、現在Snowflake Anacondaチャンネルでは利用できません。
開発者ガイド¶
ガイド |
説明 |
---|---|
Snowflake Python API パッケージをインストールします。 |
|
PythonコードからSnowflakeに接続します。 |
|
タスクとタスクの DAGs の作成、実行、管理には API を使用します。 |
|
データベース、スキーマ、テーブルの作成と管理には API を使用します。 |
|
仮想ウェアハウスの作成と管理には API を使用します。 |
|
API を使用して、コンピュートプール、イメージリポジトリ、サービスなど、Snowpark Container Servicesのコンポーネントを管理します。 |
Snowflakeへのアクセスコスト¶
使用クレジットとネットワークアクティビティの両方のコストを削減するために、Snowflake Python API は、Snowflakeと同期するように設計されたメソッドを呼び出すときにのみ、Snowflakeと通信するように設計されています。
API 内のオブジェクトはローカル参照(または ハンドル)か、Snowflakeに格納された状態のスナップショットです。一般的に、Snowflakeからの情報を操作したり、取得したりする場合は、ローカルのメモリ内参照オブジェクトを介して行います。
これらの参照は、メソッドを呼び出すまでSnowflakeと同期しません。メソッドを呼び出すと、通常、使用クレジットとネットワークアクティビティの両方でコストが発生します。対照的に、属性にアクセスするときなど、メモリ内参照を操作する場合は、作業はローカルで実行され、そのようなコストは発生しません。