TROCCOのカスタム変数は、ジョブの実行方法(転送設定から直接実行・ワークフローから実行・親ワークフローから実行)と、カスタム変数の展開設定(現在時刻を基準に展開・指定日時を基準に展開・変数ごとに値を指定)の組み合わせによって、展開される値が異なります。
この記事では、実際の検証結果をもとに各パターンの展開値の差異を説明します。
検証環境
転送元Google BigQueryの転送設定を作成し、以下のSQLでカスタム変数の展開値を確認しました。
SELECT
"$runtime$" AS runtime,
"$queing$" AS queing,
"$label$" AS label;
検証に使用したカスタム変数
| 変数名 | データ型 | 値 | フォーマット | タイムゾーン |
|---|---|---|---|---|
$runtime$ |
時刻・日付(実行時) | 0時間前 | %Y-%m-%d %H:%M:%S |
Asia/Tokyo |
$queing$ |
時刻・日付(キューイング時) | 0時間前 | %Y-%m-%d %H:%M:%S |
Asia/Tokyo |
$label$ |
文字列 | resource |
— | — |
転送設定からジョブ実行する
現在時刻を基準に展開
このとき、ジョブの実行開始時間は 2026-08-07 11:38:01 +09:00 でした。
| カスタム変数のデータ型 | 展開される値 | 展開結果(例) |
|---|---|---|
| 時刻・日付(実行時) | ジョブの開始日時 | 2026-08-07 11:38:02 |
| 時刻・日付(キューイング時) | ジョブの実行をトリガーした時刻 | 2026-08-07 11:37:39 |
| 文字列 | カスタム変数作成時に定義した値 | resource |
文字列は時刻・日付と異なり展開タイミングの概念がなく、カスタム変数作成時に定義した値がそのまま使われます。
指定日時を基準に展開
このとき、ジョブの実行開始時間は 2026-08-07 11:51:50 +09:00、指定した日時は 2026-08-01 10:00:00 でした。
| カスタム変数のデータ型 | 展開される値 | 展開結果(例) |
|---|---|---|
| 時刻・日付(実行時) | ジョブの開始日時 | 2026-08-07 11:51:50 |
| 時刻・日付(キューイング時) | 指定した日時 | 2026-08-01 10:00:00 |
| 文字列 | カスタム変数作成時に定義した値 | resource |
「実行時」を選択した場合、指定した日時は無視されジョブの開始日時が使われます。「キューイング時」を選択した場合のみ、指定した日時が展開されます。
変数ごとに値を指定
このとき、ジョブの実行開始時間は 2026-08-07 11:57:58 +09:00 でした。実行時・キューイング時ともに 2026-08-01 10:00:00、文字列には resource_1 を指定しました。
| カスタム変数のデータ型 | 展開される値 | 展開結果(例) |
|---|---|---|
| 時刻・日付(実行時) | 指定した日時 | 2026-08-01 10:00:00 |
| 時刻・日付(キューイング時) | 指定した日時 | 2026-08-01 10:00:00 |
| 文字列 | 指定した値 | resource_1 |
「変数ごとに値を指定」では実行時・キューイング時どちらを選択しても、指定した値で展開されます。
ワークフローからジョブ実行する
ワークフロー側でカスタム変数を指定した場合、ワークフロー側の設定が転送設定側の設定を上書きします。検証では $label$ にループ実行(workflow_1 / workflow_2 / workflow_3)を設定しました。
現在時刻を基準に展開
ワークフローのトリガー時刻は 2026-08-07 12:09:00 でした。
| 時刻・日付(実行時) | 時刻・日付(キューイング時) | 文字列 |
|---|---|---|
2026-08-07 12:09:22 |
2026-08-07 12:09:00 |
workflow_1 |
2026-08-07 12:10:26 |
2026-08-07 12:09:00 |
workflow_2 |
2026-08-07 12:11:20 |
2026-08-07 12:09:00 |
workflow_3 |
転送設定から設定した場合と異なり、ワークフロー内に複数のリソースがある場合、実行時はそれぞれのジョブ開始日時が基準になります。キューイング時はワークフローのトリガー時刻が基準となります。
指定日時を基準に展開
ジョブの実行開始時間は 2026-08-07 13:11:59 +09:00、指定した日時は 2026-08-01 11:00:00 でした。
| 時刻・日付(実行時) | 時刻・日付(キューイング時) | 文字列 |
|---|---|---|
2026-08-07 13:11:58 |
2026-08-01 11:00:00 |
workflow_1 |
2026-08-07 13:13:00 |
2026-08-01 11:00:00 |
workflow_2 |
2026-08-07 13:13:57 |
2026-08-01 11:00:00 |
workflow_3 |
変数ごとに値を指定
実行開始時間は 2026-08-07 13:31:23 +09:00 でした。ワークフロー側で実行時・キューイング時ともに 2026-08-01 12:00:00、文字列には resource_diff を指定しました。
| 時刻・日付(実行時) | 時刻・日付(キューイング時) | 文字列 |
|---|---|---|
2026-08-01 12:00:00 |
2026-08-01 12:00:00 |
workflow_1 |
2026-08-01 12:00:00 |
2026-08-01 12:00:00 |
workflow_2 |
2026-08-01 12:00:00 |
2026-08-01 12:00:00 |
workflow_3 |
ワークフロー側でループ実行が設定されている文字列のカスタム変数に対して「変数ごとに値を指定」で値を指定しても、ループ実行の値が優先されます。
親ワークフローからジョブ実行する
子ワークフローをタスクとして持つ親ワークフローから実行した場合の展開結果です。検証では子ワークフローにて $label$ にループ実行(workflow_1 / workflow_2 / workflow_3)を設定しました。
現在時刻を基準に展開
親ワークフローのトリガー時刻は 2026-08-07 13:45:32 でした。
| 時刻・日付(実行時) | 時刻・日付(キューイング時) | 文字列 |
|---|---|---|
2026-08-07 13:45:53 |
2026-08-07 13:45:32 |
workflow_1 |
2026-08-07 13:46:49 |
2026-08-07 13:45:32 |
workflow_2 |
2026-08-07 13:47:47 |
2026-08-07 13:45:32 |
workflow_3 |
ワークフローからジョブ実行する場合と同様に、実行時はそれぞれのジョブ開始日時が基準になります。キューイング時は親ワークフローのトリガー時刻が基準となります。
指定日時を基準に展開
親ワークフローの実行開始時間は 2026-08-07 13:50:31 +09:00、指定した日時は 2026-08-01 13:00:00 でした。
| 時刻・日付(実行時) | 時刻・日付(キューイング時) | 文字列 |
|---|---|---|
2026-08-07 13:50:43 |
2026-08-01 13:00:00 |
workflow_1 |
2026-08-07 13:51:42 |
2026-08-01 13:00:00 |
workflow_2 |
2026-08-07 13:52:36 |
2026-08-01 13:00:00 |
workflow_3 |
変数ごとに値を指定
親ワークフローの実行開始時間は 2026-08-07 15:13:16 +09:00 でした。実行時・キューイング時ともに 2026-08-01 14:00:00、文字列には resource_diff を指定しました。
| 時刻・日付(実行時) | 時刻・日付(キューイング時) | 文字列 |
|---|---|---|
2026-08-01 14:00:00 |
2026-08-01 14:00:00 |
workflow_1 |
2026-08-01 14:00:00 |
2026-08-01 14:00:00 |
workflow_2 |
2026-08-01 14:00:00 |
2026-08-01 14:00:00 |
workflow_3 |
ループ実行が設定されている文字列のカスタム変数に対して「変数ごとに値を指定」で値を指定しても、ループ実行の値が優先されます。
子ワークフローにループ実行を設定している場合の注意
子ワークフローで文字列のカスタム変数にループ実行を設定している場合、親ワークフローからの変数指定は以下の挙動になります。
| 親の設定 | 子の設定 | 実行結果 |
|---|---|---|
| 変数の値を1つ指定 | 変数の値を3つ指定して3回ループ | 子のループ設定通り3回実行(親の値は無視) |
| 変数の値を3つ指定して3回ループ | 変数の値を3つ指定して3回ループ | 親3回 × 子3回 = 9回実行(文字列値は子のループ値が優先) |
| 変数の指定あり(ループあり) | 変数の指定なし(ループなし) | 親の値で上書きされる |
親ワークフローと子ワークフローの両方で同じ文字列のカスタム変数にループを設定すると、実行回数が掛け算になります。意図せず大量のジョブが実行される可能性があるため、親子両方でループを設定する際は実行回数に注意してください。
親から子の変数を上書きしたい場合は、子ワークフローのループ実行設定を解除した上で親から値を指定してください。
まとめ
- 時刻・日付(実行時)は、展開設定に「現在時刻を基準」「指定日時を基準」どちらを選択しても、常にそのジョブの開始日時が展開される
- 時刻・日付(キューイング時)のキューイング時刻の基準は実行方法によって異なる
- 転送設定から実行:ジョブ実行をトリガーした時刻
- ワークフローから実行:ワークフローのトリガー時刻
- 親ワークフローから実行:親ワークフローのトリガー時刻
- 「変数ごとに値を指定」では、実行時・キューイング時どちらを選択しても指定した値で展開される
- ワークフロー側でカスタム変数の展開値を設定した場合、転送設定側の設定は上書きされる
- ワークフローでループ実行が設定されている文字列のカスタム変数は、「変数ごとに値を指定」で値を指定してもループ設定の値が優先される
コメント
0件のコメント
記事コメントは受け付けていません。