なぜ重要か
従来は、TaskやDAGの細かなスケジュール制御、依存関係の再帰取得、Code Bundleのライフサイクル管理をPython APIだけで一貫して扱えない場合がありました。v1.13.0では、秒単位の実行間隔やroot taskのWHEN条件、重複実行ポリシーをAPIで定義でき、Code Bundleの登録から実行管理までを自動化できます。
対象となるチーム
- Snowflakeのデータ基盤・ワークフロー運用チーム
- ETL/ELTパイプライン開発者
- Snowflake上のアプリケーション開発者
- CI/CDおよびジョブ実行基盤の担当者
提供条件
- 対象バージョンはSnowflake Python APIs 1.13.0、公開日は2026年8月10日です。
- 提供ステータスはリリースノートに記載なしです。
- 必要なSnowflakeエディションはリリースノートに記載なしです。
- 対応リージョンはリリースノートに記載なしです。
- Code Bundle、Task、DAGのサーバー側要件や必要権限はリリースノートに記載なしです。
ユースケース
- 短い間隔でデータ処理を起動するTaskを、秒単位かつ1分未満の間隔で定義する。
- DAGのroot taskにWHEN条件とoverlap_policyを設定し、条件成立時だけ実行するとともに重複実行を制御する。
- Taskの依存関係をrecursive=Trueで取得し、影響範囲分析や運用監視に利用する。
- Code Bundleをスキーマ配下でバージョン管理し、ステージ上のBundleを実行して状態確認やキャンセルを自動化する。
- 非同期ジョブの完了待ちをアプリケーション側で制御し、API呼び出しではジョブIDだけを即時取得する。
仕組みと使い方
Task・DAG APIでは、DAGのcondition、Taskおよびroot taskのoverlap_policy、TaskとDAGTaskのsuccess_integrationおよびexecute_as_userを設定できます。Taskのスケジュールとtarget completion intervalは秒単位で定義できます。依存タスクを再帰的に取得する場合は、TaskResource.fetch_task_dependentsのrecursive引数を使用します。Code Bundleは root.databases[<db>].schemas[<schema>].code_bundles から作成、一覧取得、取得、バージョン追加、実行、削除を行い、実行管理は root.code_bundle_execution から行います。非同期実行で asyncExec=true を指定し、HTTP 202 Acceptedを受け取った際にポーリングせず応答を返すには、環境変数 _SNOWFLAKE_SKIP_ASYNC_EXEC_POLLING=true を設定します。
導入ステップ
- Snowflake Python APIsの依存バージョンを1.13.0に固定し、既存コードとの互換性を確認する。
- 対象のTask・DAG・Code Bundle操作に必要なSnowflake権限とサーバー側対応状況を公式ドキュメントで確認する。
- 開発用環境で秒単位スケジュール、WHEN条件、overlap_policy、依存関係取得を小規模に検証する。
- Code Bundleの作成、バージョン追加、実行、状態取得、キャンセル、削除を一連のテストとして実行する。
- 非同期処理を利用する場合は環境変数を設定し、ジョブID取得後の状態監視とエラー処理を実装する。
運用上の注意
_SNOWFLAKE_SKIP_ASYNC_EXEC_POLLING=trueは、asyncExec=trueのリクエストが202 Acceptedを返した場合にだけポーリングを省略します。429、503、504などの一時エラーに対するリトライ動作は影響を受けません。- TaskおよびDAGの実行条件や重複実行ポリシーを変更すると、既存パイプラインの実行順序や同時実行数が変わる可能性があるため、検証環境で確認してください。
- パスパラメータ、特殊文字を含むリソース名、stage pathの引用符やバックスラッシュの扱いが厳格化されています。従来受け入れられていた不正形式がValueErrorなどで失敗する可能性があります。
- Code Bundle実行の完了確認をポーリングからアプリケーション側の監視へ移す場合、ジョブIDの保存、状態取得、キャンセル、タイムアウト処理を別途設計する必要があります。
制約事項
- エディション、リージョン、提供ステータス、Preview該当性はリリースノートに記載されていません。
- 各APIの詳細なメソッドシグネチャ、戻り値、必要権限、Code Bundleの構成要件はリリースノートだけでは確認できません。
- 非同期ポーリングの省略は、
asyncExec=trueと202 Acceptedの応答に限定されます。 - Snowflake Python APIs v1.13.0で追加された機能であり、利用中のSnowflakeアカウントや対象オブジェクトがサーバー側で利用可能かどうかは別途確認が必要です。
次に確認すること
- Snowflake Python APIsの公式ドキュメントで、Task、DAG、Code Bundleの具体的なAPI仕様とサンプルを確認する。
- 対象アカウントのSnowflakeリリース、エディション、リージョン、必要権限、およびCode Bundle対応状況を確認する。
- 既存パイプラインを複製した検証環境で、スケジュール、依存関係、重複実行、非同期ジョブの挙動をテストする。
- v1.13.0のセキュリティ改善による入力検証変更が、既存のリソース名やstage pathに影響しないか確認する。
公式情報
仕様・提供条件は更新される可能性があります。導入前に必ず公式リリースノートを確認してください。
https://docs.snowflake.com/release-notes/clients-drivers/snowapi-python-2026