Skip to content
Last updated

ワークフローオブジェクトの取得

Treasure Dataは、Treasure Dataコンソール外で特定のワークフローの詳細を表示するために使用できるAPIを提供しています。以下の図1は、APIによって返されるワークフローオブジェクトの例を示しています。開始日と終了日を含むワークフローのスケジュール情報は、16〜20行目に表示されています。 以下のRESTfulエンドポイントを呼び出すことで、Treasure Data内のワークフローオブジェクトのリストを取得できます:

https://api.treasuredata.com/api/workflows

この呼び出しによって返されるワークフローオブジェクトには、ワークフローのIDとワークフローのスケジュール情報の両方が含まれています(図1を参照)。

このエンドポイントは以下のパラメータで呼び出すことができます:

  • パラメータなし–最小のIDから始まる200個のワークフローオブジェクトを返します。これは、システムで定義されているワークフローが少ない場合にのみ適したオプションです。
  • count--返される結果を指定された数に制限します。これにより、デフォルトの200ワークフローオブジェクトの制限を克服できますが、大きなcountを指定すると、レスポンスが大幅に遅延し、結果の解析に追加の時間が必要になる場合があります。countはint32として定義されているため、200万以上のオブジェクトを指定できます。
  • last_id–結果を、指定された数より大きいIDを持つ最初の200個のワークフローオブジェクトに制限します。これは、ワークフローID番号がどのようなものか大まかに把握している場合に便利です。例えば、現在のワークフローIDが3456のような場合、last_idを約3400に設定して、呼び出しの結果を制限できます。
  • name_pattern–結果を、指定したパターンに一致する名前を持つワークフローオブジェクトに制限します。ワークフローオブジェクトの命名規則に従っている場合、またはワークフローの名前がわかっている場合、これがワークフローオブジェクトを表示する最も効率的な方法です。

レスポンスの形式は未フォーマットのJSONです。ただし、読みやすさのために、以下の例のレスポンスはJSONフォーマットツールを通してパイプされています。

countを使用したAPI呼び出しの例

$ curl -H 'Authorization: TD1 ${TD_API_KEY}' \
'https://api.treasuredata.com/api/workflows/?count=2000' | python -m json.tool
{
  "workflows": [
      {
          "id": "334",
          "name": "myredshift",
          "project": {
              "id": "14",
              "name": "myredshift"
          },
          "revision": "a56dfb4e8eca3214ad520b45b2c2d1ea",
          "timezone": "UTC",
          "config": {
              "_export": {
                  "user": "awsuser",
                  "host": "td.ckw8m7vbvvvn.us-east-1.td.amazonaws.com",
                  "database": "digdag_test",
                  "table": "td_wf_prod_test"
              },
              "+prepare_table": {
                  "redshift>": "queries/create_table.sql"
              },
              "+load_data": {
                  "redshift_load>": null,
                  "from": "s3://digdag-test/td-workflow-test/testdata.csv.gz",
                  "delimiter": ",",
                  "gzip": true
              },
              "+increament_count": {
                  "redshift>": "queries/increment_count.sql"
              },
              "+unload_data": {
                  "redshift_unload>": null,
                  "query": "select * from ${table}",
                  "to": "s3://digdag-test/td-workflow-test/testdata.csv.gz",
                  "allowoverwrite": true,
                  "delimiter": ",",
                  "gzip": true
              }
          }
      },
      {
          "id": "349",
          "name": "simple_workflow",
          "project": {
              "id": "123",
              "name": "TestUI"
          },
.
.
.

last_idを使用したAPI呼び出しの例

curl -H 'Authorization: TD1 1/123456789abcdef0123456789abcdef012345678' 'https://api.treasuredata.com/api/workflows/?last_id=7828860' | python -m json.tool
{
  "workflows": [
      {
          "id": "7828866",
          "name": "wtt_workflow",
          "project": {
              "id": "234567",
              "name": "wtt_workflow"
          },
          "revision": "ce2a35ae71a442b6abb3274551fe1692",
          "timezone": "UTC",
          "config": {
              "_export": {
                  "td": {
                      "database": "dbname.table"
                  }
              },
              "schedule": {
                  "start": "2022-04-27",
                  "minutes_interval>": 30,
                  "end": "2022-04-30"
              },
              "+task1": {
                  "td_load>": "my_transfer_unique_id"
              },
              "+task2": {
                  "td_run>": "my_saved_query"
              }
          }
      },
      {
          "id": "7829021",
          "name": "syndication",
          "project": {
              "id": "263789",
              "name": "journey_6543"
          },
.
.
.

name_patternを使用したAPI呼び出しの例

$ curl -H 'Authorization: TD1 ${TD_API_KEY}' \
'https://api.treasuredata.com/api/workflows/?name_pattern=wtt' | python -m json.tool
{
  "workflows": [
      {
          "id": "7828866",
          "name": "wtt_workflow",
          "project": {
              "id": "234567",
              "name": "wtt_workflow"
          },
          "revision": "ce2a35ae71a442b6abb3274551fe1692",
          "timezone": "UTC",
          "config": {
              "_export": {
                  "td": {
                      "database": "dbname.table"
                  }
              },
              "schedule": {
                  "start": "2022-04-27",
                  "minutes_interval>": 30,
                  "end": "2022-04-30"
              },
              "+task1": {
                  "td_load>": "my_transfer_unique_id"
              },
              "+task2": {
                  "td_run>": "my_saved_query"
              }
          }
      }
  ]
}

IDによるワークフローオブジェクトの取得

APIが1つのワークフローオブジェクトのみを返すようにしたい場合は、ワークフローオブジェクトIDを使用してAPIを呼び出すことができます。上記のすべての例では、ワークフローオブジェクトのIDが返されます。ただし、TDコンソールを使用してワークフローIDを確認することもできます:

  1. TDコンソールでWorkflowsに移動します。
  2. リストをスクロールするか、リストを検索して、ワークフローを見つけて選択します。

ワークフローのIDはブラウザのURLに表示されます。以下の例では、wtt_workflowのワークフローIDは7828866です。

ワークフローのIDを取得したら、次のようにAPI呼び出しを行うことができます:

curl -H 'Authorization: TD1 ${TD_API_KEY}' \
'https://api.treasuredata.com/api/workflows/7828866' | python -m json.tool
{
  "id": "7828866",
  "name": "wtt_workflow",
  "project": {
      "id": "234567",
      "name": "wtt_workflow"
  },
  "revision": "ce2a35ae71a442b6abb3274551fe1692",
  "timezone": "UTC",
  "config": {
      "_export": {
          "td": {
              "database": "dbname.table"
          }
      },
      "schedule": {
          "start": "2022-04-27",
          "minutes_interval>": 30,
          "end": "2022-04-30"
      },
      "+task1": {
          "td_load>": "my_transfer_unique_id"
      },
      "+task2": {
          "td_run>": "my_saved_query"
      }
  }
}

図1:基本的なTreasure Dataワークフローオブジェクトの例

 {
  "id": "7828866",
  "name": "wtt_workflow",
  "project": {
      "id": "265740",
      "name": "wtt_workflow"
  },
  "revision": "ce2a35ae71a442b6abb3274551fe1692",
  "timezone": "UTC",
  "config": {
      "_export": {
          "td": {
              "database": "dbname.table"
          }
      },
      "schedule": {
          "start": "2022-04-27",
          "minutes_interval>": 30,
          "end": "2022-04-30"
      },
      "+task1": {
          "td_load>": "my_transfer_unique_id"
      },
      "+task2": {
          "td_run>": "my_saved_query"
      }
  }
 }