Skip to content
Last updated

ワークフローでのタスクのグループ化と並列実行の有効化

タスクのグループ化は、ワークフローのビジネスロジックを整理する方法として役立ちます。これにより、他のチームメイトがあなたの意図を理解しやすくなり、ワークフロー内の特定のタスクの並列実行も可能になります。

タスクのグループ化は、並列実行を有効にしたり、実行されるデータフローの一部を表す類似のステップにワークフローを整理したりするのに便利です。

例えば、多くのワークフローを以下のグループに整理することができます:

  • Ingestion(取り込み)

  • Data Preparation(データ準備)

  • Analysis(分析)

  • Export(エクスポート)

TD Workflow では、タスクを並列実行できます。デフォルトでは、タスクは順次実行されます。TD Workflow タスクを並列実行するには、parallel パラメータを _parallel: True として指定する必要があります。また、並列実行したいタスクをグループ化するために +group 構文を使用することをお勧めします。

並列実行するタスクは必要なだけ定義できますが、TD は特定の時点で最大10個の個別の処理スレッドのみを実行できます。タスクには4つの異なる状態があり、そのうちの1つだけが Running です。同時に実行状態にあるタスクが10個以下である限り、それらのタスクはそれぞれ並列に実行されます。

以下の情報のコンテキストを理解するために、TD Workflows の例を読むか完了してください。参考までに、その例のワークフローを示します。このワークフローでは、task1 が最初に実行され、次に task2 が実行されます。

YAML に似たワークフロー設定ファイルには拡張子「.dig」を使用しています。テキストエディタがワークフローファイルの色付けとインデントを自動的に正しく行わない場合があります。YAML のインデントは2スペースですが、通常は自動的に4に設定されます。ほとんどのテキストエディタプログラムでは、.dig を YAML ファイルのように自動的に書き込みおよび読み取りするように設定できます。この変更を行うことをお勧めします。

_export:
  td:
    database: workflow_temp

+task1:
  td>: queries/daily_open.sql
  create_table: daily_open

+task2:
  td>: queries/monthly_open.sql
  create_table: monthly_open

このワークフローは、タスクを上から下への順次順序で実行します。

ワークフローでのタスクのグループ化

グループタスク(他のサブタスクで構成されるタスク)を作成しましょう。タスクのグループ化は、ワークフロー内のラベルの下にサブタスクをインデントすることで行います。

  1. ワークフローの dig ファイルを編集用に開くか、TD Console Workflow エディタを使用します。

  2. グループ化したいタスクを特定します。

  3. ワークフローに以下の構文を追加します: +groupname:

groupname はグループ化に使用する任意の名前にできます。

  1. +groupname>: の下に既存のタスク構文を追加またはインデントします。例えば、my_group_task には task1task2 が2スペースインデントされ、タスクがこの新しいグループタスク内にあることを示しています。
_export:
  td:
    database: workflow_temp

+my_group_task:
  +task1:
    td>: queries/daily_open.sql
    create_table: daily_open

  +task2:
    td>: queries/monthly_open.sql
    create_table: monthly_open

  +output:
    td_run>: <place the name of a saved query here>

最終タスク output も追加しました。これは my_group_task の一部ではありません。

ワークフローの並列タスク実行の有効化

TD Workflow では、タスクを並列実行できます。デフォルトでは、タスクは順次実行されます。TD Workflow タスクを並列実行するには、parallel パラメータを _parallel: True として指定する必要があります。

  1. ワークフローの dig ファイルを編集用に開くか、TD Console Workflow エディタを使用します。

  2. グループ化したいタスクを特定します。

  3. ワークフローに以下の構文を追加します: +groupname: groupname はグループ化に使用する任意の名前にできます。

  4. groupname の直下に以下の parallel パラメータ構文を追加します:

_parallel: True
  1. 既存のタスク構文を追加またはインデントします。例えば、my_group_task には task1task2 が2スペースインデントされ、タスクがこの並列グループタスク内にあることを示しています。
_export:
  td:
    database: workflow_temp
+my_group_task:
  _parallel: true
  +task1:
    td>: queries/daily_open.sql
    create_table: daily_open
  +task2:
    td>: queries/monthly_open.sql
    create_table: monthly_open
+output:
  td_run>: REPLACE_WITH_YOUR_QUERY_NAME

my_group_task 内のすべてのタスクが並列に実行され、その後 output タスクが実行されます。