Databricksワークフローにおける繰り返しタスクの円滑化

[Streamlining repetitive tasks in Databricks Workflows \| Databricks Blog](https://www.databricks.com/blog/streamlining-repetitive-tasks-databricks-workflows)の翻訳です。

:::note warn
本書は著者が手動で翻訳したものであり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

# タスクループ処理で複雑で繰り返しのワークフローをシンプルに

**For Each**によるDatabricksワークフローにおけるループ処理が正式提供になったことを発表できて嬉しく思っています。新たなタスクタイプは、実行時に定義された動的パラメータセットに対してループ処理を行うことで、繰り返しタスクの自動化がこれまでにないほどに簡単になり、これは[Databricksワークフロー](https://www.databricks.com/jp/product/workflows)における[フローのコントロールのための強化機能](https://www.databricks.com/jp/blog/announcing-enhanced-control-flow-databricks-workflows)に対する継続的な投資の一部となっています。[For Each](https://docs.databricks.com/ja/jobs/for-each.html)を用いることで、ワークフローの効率性やスケーラビリティを改善し、複雑なロジックではなく洞察に時間を費やせるようになります。

![](https://www.databricks.com/sites/default/files/inline-images/streamlining-databricks-workflows-blog-img-1.png?v=1724746351)

# ループ処理で繰り返しタスクの対応を劇的に改善

複雑なワークフローの管理には多くの場合において、複数のデータセットの処理や複数のオペレーションの実行を必要とする繰り返すのタスクへの対応が含まれます。ループ処理をサポートしないデータオーケストレーションツールにはいくつかの課題があります。

## 複雑なロジックをシンプルに

これまでユーザーは、繰り返しのタスクを管理するためのロジックを手動で管理しており、維持が困難な状況に甘んじていました(上の図をご覧ください)。多くの場合、このワークアラウンドは、ワークフローを肥大化させ、エラーに脆弱となるようなオペレーションごとの単一のタスクの作成につながりました。

For Eachを用いることで、これまでは必要だった複雑なロジックは劇的にシンプルになります。ユーザーは作成時間を短縮するために、複雑なスクリプトに妥協することなしに、ワークフローで簡単にループを定義できるようになります。これは、ワークフローの設定のプロセスをシンプルにするだけではなく、エラーの可能性を減少させ、ワークフローをよりメンテナンスしやすく効率的にします。以下の例では、100の国からの売り上げデータは、集計処理の前に以下のステップを通じて処理されます:

1. 売り上げデータの取り込み
1. For Eachを用いて100カ国のデータを処理
1. データを集計し、売り上げモデルをトレーニング

![](https://www.databricks.com/sites/default/files/inline-images/streamlining-databricks-workflows-blog-img-2.png?v=1724746351)

## 動的パラメータで柔軟性を強化

For Eachがない場合、ユーザーはパラメーターが頻繁に変更されないシナリオに限定されてしまいます。For Eachによって、Databricksワークフローは[タスクバリュー](https://docs.databricks.com/ja/jobs/share-task-context.html)を用いることで実行時に定義された動的なパラメーターに対してループするできる機能を獲得し、劇的に強化されることになり、ハードコーディングする必要がなくなります。以下では、ノートブックタスクのパラメーターが動的に定義され、For Eachループに引き渡されていることを確認できます(こちらでは[すでに正式提供されているサーバレスコンピュート](https://www.databricks.com/jp/blog/announcing-general-availability-serverless-compute-notebooks-workflows-and-delta-live-tables)を活用していることに気づくことでしょう！)。

![](https://www.databricks.com/sites/default/files/inline-images/streamlining-databricks-workflows-blog-img-3.png?v=1724746351)

## 同時実行による効率的な処理

For Eachでは、他の主要なオーケストレーションツールとは一線を画する**真の同時実行処理**をサポートしています。For Eachでは、ユーザーは全体的な実行時間を削減することで効率性を改善するために並列にどれだけのタスクを実行するのかを指定することができます。以下では、For Eachループの同時実行するループを設定していることを確認できますが、最大で100同時実行をサポートしています。デフォルトでは、同時実行数は1に設定されており、タスクは逐次的に実行されます。

![](https://www.databricks.com/sites/default/files/inline-images/streamlining-databricks-workflows-blog-img-4.png?v=1724746351)

## デバッグが簡単

ループ処理のサポートなしには、ワークフローのデバッグや監視はさらに難しいものになります。膨大な数なタスクから構成されるワークフローのデバッグは困難となり、稼働時間を減少させます。

For Eachでの[リペア](https://docs.databricks.com/ja/jobs/repair-job-failures.html#re-run-failed-and-skipped-tasks)をサポートすることで、デバッグや監視が容易になります。1つ以上のイテレーションが失敗した場合、ループ全体ではなく失敗したイテレーションのみが再実行されます。これによって、処理のコストと時間の両方を削減でき、効率的なワークフローを維持することが簡単になります。ワークフローの処理実行に対する可視性の改善によって、クイックなトラブルシュートやダウンタイムの削減が可能となり、生産性の改善やタイムリーな洞察につながることになります。以下では、上述の例の最終的なアウトプットを示しています。

![](https://www.databricks.com/sites/default/files/inline-images/streamlining-databricks-workflows-blog-img-5.png?v=1724746351)

Databricksワークフローの広範な機能をさらに拡張するこれらの機能強化によって、データインテリジェンスプラットフォームにおけるオーケストレーションを提供し、劇的にユーザー体験を改善し、お客様のワークフローをさらに効率的、柔軟、管理可能なものにします。

# 使い始める

我々は、皆様が自身のワークフローをスムーズにするためにどのようにFor Eachを活用し、皆様のデータ処理をスーパーチャージするのかを見ることを楽しみにしています！

- [こちらのデモ](https://www.databricks.com/resources/demos/videos/data-engineering/databricks-workflows?itm_data=demo_center)を見て[Databricksワークフロー](https://www.databricks.com/jp/product/workflows)を学びましょう
- [ドキュメント](https://docs.databricks.com/ja/jobs/for-each.html)を参照して、For Eachの使い方を学びましょう

様々なタスクタイプや、DatabricksワークフローのUIでの設定方法を学ぶには、[製品ドキュメント](https://docs.databricks.com/ja/jobs/create-run-jobs.html#task-type-options)をご覧ください。

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)