# Workflow 構文について

Treasure ワークフロー 構文は CLI と UI の両方で使用します。定義ファイルで構文を使用して、例えば複数の TD 保存済みクエリのワークフローを作成します。このトピックでは、依存関係の定義、ワークフローのスケジューリング、カスタムアラートの設定に関するコア構文について説明します。

Treasure ワークフロー 構文は、オープンソースコードの Digdag に基づいています。Treasure ワークフロー定義ファイルの拡張子は .dig です。ファイル名がワークフローの名前になります。定義ファイルの形式は YAML に似ています。ワークフロー定義ファイルでは、発生するタスクと操作を指定します。スケジュール、並列実行、その他のパラメータも指定できます。

## ワークフローコードのインデント

CLI からワークフローを作成する場合、テキストエディタプログラムを変更して .dig ファイルを .yml ファイルとして書き込みおよび読み取りする必要がある場合があります。そうしないと、テキストエディタがワークフローファイルを正しくインデントしない可能性があります。

YAML のインデントは2スペースですが、通常テキストエディタのタブキーは4スペース以上に設定されています。

### 基本的なワークフロー

ワークフローは単純な順次依存関係を定義できます。

![](/assets/image-20190821-001638.9ee8486b355a399b54c82449560ae316e6573adecde7caffa3570abc29c51307.142841d8.png)

Treasure ワークフロー 構文の例は以下のとおりです：


```yaml
_export:
  td:
    database: workflow_temp

+data_prep:
  td_run>: <replace_with_1st_saved_query_name>

+analysis_and_export:
  td_run>: <replace_with_2nd_saved_query_name>
```

この例では、2番目のタスク "analysis_and_export" は最初のタスク "data_prep" に依存しています。そのため、2番目のタスクは最初のタスクが完了するまで実行されません。

この例には、ワークフローが実行される Treasure Data データベースを指定する export パラメータが含まれています。export パラメータ `td` は、指定された Treasure Data データベースにアクセスするスクリプトを呼び出します。


```yaml
_export:
  td:
    database: workflow_temp
```

ワークフロー固有の構文は `+` で始まります。

`+` は新しいタスクを示します。`+` の後から `:` の前までのテキストがタスク名です。タスクには任意の名前を付けることができます。

オペレータは `>` で示され、タスク名の右側に2スペースでインデントする必要があります。`td_run>` は、この最初の例では、Treasure Data から名前付き保存済みクエリを実行できるオペレータです。

オペレータは、ワークフロータスクの「アクション」部分と考えることができ、発生する具体的な処理を表します。

'td_run' オペレータを使用する場合、スペースを含む名前の保存済みクエリを実行したい場合があります。そのような場合は、テキストをダブルクォーテーションで囲みます。

### より複雑な依存関係を持つワークフロー

ワークフローは複雑になることがあり、複数のコンピュートサービスにわたって数百の並列タスクを同時に管理して実行できます。

![](/assets/image-20190821-001621.464447b5ca1bb19b37627dc01a32c1214d0e97a10e417f44ee799d8873235dbd.142841d8.png)

やや複雑な依存関係パターンは、Treasure ワークフロー コード構文で以下のように表されます：


```yaml
_export:
  td:
    database: workflow_temp

+data_prep:
  _parallel: true

  +prep_1:
    td_run>: <replace_with_1st_prep_saved_query_name>

  +prep_2:
    td_run>: <replace_with_2nd_prep_saved_query_name>

  +analysis_and_export:
    td_run>: <replace_with_2nd_saved_query_name>
```

この例では、タスク "data_prep.prep_1" と "data_prep.prep_2" は同時に実行されます。両方のタスクが完了すると、タスク "analysis_and_export" が実行されます。

`_parallel` パラメータは[並列実行](https://docs.treasuredata.com/smart/project-product-documentation-duplicate/grouping-tasks-in-workflow-and-enabling-parallel-execution)を有効にします。

例の先頭では、`timezone` パラメータを使用してワークフローのタイムゾーンを設定し、セッションタイムスタンプ変数とスケジューリングに影響を与えます。

## その他の構文

Treasure ワークフロー構文はオープンソースコードの Digdag に基づいているため、構文の多くは同じです。

### 変数

Digdag ドキュメントの [Using ${variables}](https://docs.digdag.io/workflow_definition.html?highlight=variables#id7) を参照してください。特に、Treasure ワークフロー は以下の構文を使用します：

* 変数の計算
* 変数の定義


### オペレータとプラグイン

Digdag Concepts ドキュメントの [Operators and Plugins](https://docs.digdag.io/concepts.html?highlight=plugin#operators-and-plugins) を参照してください。また、詳細については https://docs.digdag.io/operators.html を参照してください。

### Export と Store パラメータ

Digdag Concepts ドキュメントの [Export and Store](https://docs.digdag.io/concepts.html?highlight=plugin#export-and-store-parameters) を参照してください。