このトピックでは、タスクオーケストレーションに関連する変数について説明します。
概要
変数は、システム変数、時間変数、および非時間変数を含む、タスクフロー内の動的な値である。 変数は、ノードで ${varName}
の形式で動的に参照できます。
システム変数
システム変数は、タスクフローのIDやタスクフローが実行される時点など、システムで事前定義された変数です。
システム変数以外の変数をまとめてカスタム変数と呼びます。 カスタム変数の名前は一意である必要があります。 カスタム変数の優先度は、システム変数の優先度よりも高くなります。 カスタム変数がシステム変数と同じ名前を共有する場合、カスタム変数の値はシステム変数の値を上書きします。
時間変数
タスクフロー変数 (グローバル変数): タスクフロー変数は、データタイムスタンプに基づいてオフセットされ、現在のタスクフローのすべてのノードで使用できます。 デフォルトでは、データのタイムスタンプは、タスクフローが実行された日の前日です。
説明タスクフローのいずれかのノードでタスクフロー変数を設定できます。 その後、タスクフロー変数の設定は、タスクフロー内の他のノードに自動的に同期されます。
ノード変数: ノード変数は、組み込みの時間変数bizdate(T-1) に基づいてオフセットされます。 ノード変数は、現在のノードでのみ使用できます。
たとえば、現在の日付が2023年8月22日であり、ノード変数のオフセットが + 1日に設定されている場合、ノード変数は2023年8月23日を示します。
非時間変数
タスクフロー定数 (グローバル変数): タスクフロー定数は固定値であり、現在のタスクフローのすべてのノードで使用できます。
入力変数: 入力変数は、データ管理 (DMS) によって自動的に取得されます。 ${var_name} を使用して、現在のノードのSQL文の入力変数を参照できます。 入力変数を条件付き分岐ノードのフィルタ条件として使用することもできます。 次の変数は入力変数と見なされます。
出力変数: 出力変数は定義され、その値は現在のノードに割り当てられます。 出力変数は、下流ノードによってアクセスおよび参照できます。
たとえば、Scriptノードで出力変数を設定する場合、出力変数は下流ノードのSQL文で参照できます。
シングルインスタンスSQLノードで割り当てられた出力変数: シングルインスタンスSQLノードを使用して、SQLステートメントの結果セットを定義できます。 結果セットは、2D行列として使用することができる。 変数の定義プロセス中に、行列から要素を取り出したり、行ベクトルiと列ベクトルjを使用して文字ベースの連結を実行したりできます。
スクリプト出力変数: スクリプトファイルの最終行がスクリプトノードの
{ key1: value1, key2: value2, … }
形式のJSON文字列である場合、スクリプトタスクはJSON文字列のキーと値のペアを解析して出力変数を取得します。 各変数について、名前はキーであり、値はキーの値である。 下流ノードのSQL文で${key}
形式のスクリプト出力変数を参照できます。たとえば、スクリプトファイルの最後の行が
echo {"hello": "world"}
の場合、スクリプトタスクはキーと値のペアを解析して、名前がhello、値がworldの出力変数を取得します。
時間変数の設定
パラメーター | 説明 |
変数名 | カスタム時間変数の名前。 説明 設定済みの変数を削除するには、[変数名] フィールドの右側にあるアイコンをクリックします。 |
変数ルール | カスタム時間変数の時間形式と時間オフセット設定。
説明 時間変数を設定した後、現在のノードのSQL文で |
時間形式
次の表に、カスタム変数の時間形式を定義するために使用できる時間変数を示します。
時間変数 | 説明 | サンプル形式 | サンプル値 |
安野ドミニ (AD) | GはADを示す。 | Gyyyy | AD 2021 |
年 |
| yyyy | 2021 |
月 | M: 年の月。 Mの有効値: [1,12] 。 MMの有効な値: [01,12] | MM | 08 |
週 |
| ww | 13 |
日 |
| D | 360 |
曜日 |
| e | 1 |
Ante meridiem (AM) またはpost meridiem (PM) | a: 時刻が正午の前か後かを示します。 時刻が00:00 ~ 11:59の範囲の場合、戻り値はAMです。時刻が12:00 ~ 23:59の範囲の場合、戻り値はPMです。 | a | AM |
時間 |
| HH | 10 |
分 | m: 時間の分。 mの有効値: [0,59] 。 mmの有効値: [00,59] 。 | m | 27 |
秒 |
| ss | 08 |
タイムゾーン | z: タイムゾーン。 | z | UTC + 08:00 |
次の表に、複数の時間変数を使用するサンプルの時間形式を示します。
サンプル形式 | サンプル値 |
| 2021-08-12 |
| 20210801 |
| 11:05:21 |
| 20210812 11:05:21 |
システム変数
変数 | 説明 | 例 |
sys.flow.start.timestamp | タスクフローの実行時に生成されるタイムスタンプ。 | 2021-05-24T11:20:07.562 + 08:00 |
sys.flow.start.year | タスクフローが実行される年。 | 2021 |
sys.flow.start.mo nth | タスクフローが実行される年の月。 | 5 |
sys.flow.start.day | タスクフローが実行される月の日。 | 24 |
sys.flow.start.hour | タスクフローが実行される日の時間。 | 11 |
sys.flow.start.minute | タスクフローが実行される時間の分。 | 20 |
sys.flow.start.second | タスクフローが実行される分の秒。 | 7 |
sys.flow.start.mil lisecond | タスクフローが実行される秒のミリ秒。 | 562 |
sys.flow.start.timezone | タイムゾーン。 | Asia/Shanghai |
sys.flow.biztime | データのタイムスタンプ。 デフォルトでは、データのタイムスタンプは、タスクフローが実行された日の前日です。 | 1621740007562 |
sys.flow.name | タスクフローの名前。 | dwd_activityDailyPV |
sys.node.name | タスクフロー内のノードの名前。 | 単一インスタンスSQL-1 |
ステータス変数
変数 | 説明 |
all_success | すべてのタスクが実行されます。 |
all_failed | すべてのタスクの実行に失敗します。 |
one_success | 現在のタスクフローのタスクが実行されます。 |
one_failed | 現在のタスクフローのタスクの実行に失敗しました。 |
条件付き分岐ノードのステータス変数を使用して、タスクフローで条件付き評価を行うことができます。 タスクフロー内の後続のタスクは、条件付き分岐ノードが指定された条件を満たす場合にのみ実行できます。