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

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

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

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

* Ingestion（取り込み）
* Data Preparation（データ準備）
* Analysis（分析）
* Export（エクスポート）


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

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

以下の情報のコンテキストを理解するために、[Treasure ワークフロー の例](/ja/products/customer-data-platform/data-workbench/workflows/workflows-sftp-data-connector-example)を読むか完了してください。参考までに、その例のワークフローを示します。このワークフローでは、`task1` が最初に実行され、次に `task2` が実行されます。

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

* [ワークフローでのタスクのグループ化](#grouping-tasks-in-a-workflow)
* [ワークフローの並列タスク実行の有効化](#enabling-parallel-task-execution-for-a-workflow)



```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 ファイルを編集用に開くか、Treasure コンソール Workflow エディタを使用します。
2. グループ化したいタスクを特定します。
3. ワークフローに以下の構文を追加します：
`+groupname:`


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

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



```yaml
_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` の一部ではありません。

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

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

1. ワークフローの dig ファイルを編集用に開くか、Treasure コンソール Workflow エディタを使用します。
2. グループ化したいタスクを特定します。
3. ワークフローに以下の構文を追加します：
`+groupname`:
`groupname` はグループ化に使用する任意の名前にできます。
4. `groupname` の直下に以下の parallel パラメータ構文を追加します：



```yaml
_parallel: True
```

1. 既存のタスク構文を追加またはインデントします。例えば、`my_group_task` には `task1` と `task2` が2スペースインデントされ、タスクがこの並列グループタスク内にあることを示しています。



```yaml
_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` タスクが実行されます。