多段階のデータやAIプロセス、パイプラインをオーケストレーションする上で重要な要素は、制御フローの管理です。 このため、Databricks Workflowsのコントロールフロー機能に投資を続けています。この機能により、お客様は複雑なワークフローをより適切に制御し、高度なオーケストレーションシナリオを実装することができます。 数ヶ月前、私たちはワークフローにモジュール式のオーケストレーションを定義する機能を導入しました。これにより、お客様は複雑なDAGを分解して、より良いワークフロー管理、再利用性、チーム間でのパイプラインの連鎖を実現することができます。 本日、Lakehouseのオーケストレーションにおける次のイノベーションを発表できることを嬉しく思います。
タスクの条件付き実行
条件実行は、"If/else 条件タスクタイプ" と、"Run if dependencies" の2つの機能に分けることができます。これらを組み合わせることで、ユーザーはワークフローで分岐ロジックを作成し、パイプライン内のタスク間でより洗練された依存関係を作成し、ワークフローに柔軟性を導入することができます。
新しい条件付きタスクタイプ
この機能には、If/else条件という新しいタスクタイプの追加が含まれます。 このタスク・タイプでは、制御フローに分岐条件を作成することができます。つまり、条件が真なら特定の分岐が実行され、条件が偽なら別の分岐が実行されます。 ユーザーはさまざまな条件を定義し、実行時に設定される動的な値を使用することができます。 以下の例では、予測に進む前に機械モデルの採点がチェックされます:
特定のタスクの実行をレビューする場合、ユーザーは、実行中に実行された条件の結果とどのブランチが実行されたかを簡単に確認することができます。
If/else条件は、より洗練されたユースケ ースを可能にするために、さまざまな方法で使用することができます。 いくつか例を挙げます:
- 毎日実行するようにスケジュールされているパイプラインで、週末に追加タスクを実行することができます。
- パイプラインの前のステップで新しいデータが処理されなかった場合、タスクを除外することができます。
依存関係がある場合に実行
Run if dependenciesは新しいタスクレベルの設定で、タスクの依存関係をより柔軟に定義できます。 タスクが複数のタスクに依存する場合、ユーザーは依存タスクの実行を決定する条件を定義できるようになりました。 これらの条件は"Run if dependencies" と呼ばれ、すべての依存関係が成功した場合、少なくとも1つが成功した場合、ステータスに関係なくすべてが終了した場合など、タスクが実行されることを定義することができます(完全なリストと各オプションの詳細についてはドキュメントを参照)。
Databricks Workflows UI では、ユーザーはタスクレベルのフィールドで依存関係のタイプを選択できます。
依存関係が複数のユースケースの実装に有用である場合は実行します。 例えば、グローバルな販売データを取り込むパイプラインを実装する場合、国別のビジネスロジックを持つ個別のタスクで各国のデータを処理し、その後、すべての異なる国のデータセットを1つのテーブルに集約することができま す。 この場合、1つの国の処理タスクが失敗しても、集計を進め、部分的なデータしか含まれていなくても出力テーブルを作成し、問題が解決するまで下流のコンシューマーが使用できるようにすることができます。 Databricks Workflowsには、修復実行機能があり、国の1つが失敗する原因となった問題を修正した後、すべてのデータを意図した通りに取得することができます。 このシナリオで修復実行が開始された場合、失敗した国タスクと集約タスクのみが再実行されます。
"If/else条件" タスクタイプおよび"Run if依存関係" の両方が、すべてのユーザーで一般的に利用できるようになりました。 これらの機能の詳細については、このドキュメントを参照してください。
ジョブパラメーター
ワークフローに柔軟性とコントロールを加えるもうひとつの方法は、ジョブ・パラメーターの導入です。 これらは、実行時にジョブ内のすべてのタスクが利用できるキーと値のペアです。 ジョブパラメータは、パイプラインにきめ細かい設定を追加する簡単な方法を提供し、異なるユースケース、異なる入力セット、異なる環境での同じジョブの実行のためにジョブを再利用するのに便利です(例 開発環境とステージング環境)。
ジョブパラメータは、ジョブ設定ボタン「パラメータ の編集」で定義できます。 1つのジョブに対して複数のパラメーターを定義し、システムから提供される動的な値を活用することができます。 ジョブパラメータについては、このドキュメントで詳しく説明しています。
ジョブの実行を手動でインスタンス化する場合、"Run now with different parameters" " Run now" ドロップダウンでRun now with different parameters を選択することで、異なるパラメータを指定することができます。 これは、問題を修正したり、同じワークフローを別のテーブルで実行したり、特定のエンティティを処理したりするのに便利です。
ジョブパラメータは、ジョブのフローを制御するための"If/else 条件" タスクの入力として使用することができます。 これにより、ユーザーは、ユーザーが提供した値に従って特定の実行でのみ実行される複数のブランチを持つワークフローを作成することができます。 こうすることで、特定のシナリオでパイプラインを実行したいユーザーは、そのパイプラインのフローを簡単に制御することができ、タスクをスキップしたり、特定の処理ステップを有効にしたりすることができます。
無料トライアル
私たちは、ワークフローにさらなるコントロールを加え、新 しいユースケースに取り組むために、これらの新機能をどのように使っていただけるか、とても楽しみにしています!
- Databricks Workflowsの詳細については、このデモをご覧ください。
- 条件付き実行と ジョブ・パラメータに関するドキュメントで、これらの新機能の使い方を学んでください。