DataWorks では、タスクに対して構成したスケジューリングパラメーターに基づいて、タスクの実行がスケジュールされます。スケジューリングパラメーターの値は、タスクが実行されるたびに、スケジューリングパラメーターの値の割り当てルールに基づいて自動的に置き換えられます。このようにして、スケジューリングパラメーターの値は、タスクのスケジューリング時に動的に置き換えられます。このトピックでは、スケジューリングパラメーターでサポートされている形式と、スケジューリングパラメーターの使用方法について説明します。
背景情報
Data Studio で、ノードのコードに変数 ${Variable} 形式で定義し、[スケジューリングパラメーター] セクションの [プロパティ] タブで値として変数に割り当てられているスケジューリングパラメーターを構成すると、ノードが実行されるようにスケジュールされるときに、スケジューリングパラメーターの値がノードコードで動的に置き換えられます。
スケジューリングパラメーターに定数を割り当てることができます。タスクのスケジューリングパラメーターに定数を割り当てると、タスクが実行されるたびに同じ値がスケジューリングパラメーターに渡されます。
スケジューリングパラメーターの形式は、ノードのタイプによって異なります。たとえば、Shell ノードのスケジューリングパラメーターは、$N 形式でのみ構成できます。N は 1 から始まる整数を指定します。詳細については、「付録:参照」をご参照ください。
用語
ほとんどの場合、スケジューリングパラメーターは、動的な時点を指定する場合に使用されます。このようなシナリオでは、スケジューリングパラメーターの値は、タスクの [データタイムスタンプ] または [スケジューリング時間] に基づいて決定されます。スケジューリングパラメーターを構成する前に、タスクのデータタイムスタンプとスケジューリング時間の概念を理解する必要があります。これは、スケジューリングパラメーターの値の形式を構成するのに役立ちます。次の表に、概念を示します。
用語 | 説明 |
データタイムスタンプ | スケジューリング時間(タスクをスケジュールする時間)の前日。オフラインコンピューティングのシナリオでは、データタイムスタンプは、ビジネストランザクションが実行された日付を表します。データタイムスタンプの値は、日にちまで正確です。 たとえば、現在の日に前日の売上高に関する統計データを収集する場合、前日はビジネストランザクションが実行された日付であり、データタイムスタンプを表します。 |
スケジューリング時間 | ビジネスメッセージを処理するためにタスクをスケジュールする時間。スケジューリング時間は秒まで正確です。スケジューリング時間は、タスクが実際に開始される時間とは異なる場合があります。タスクが実際に実行される時間は、複数の要因の影響を受けます。 |
スケジューリングパラメーターでサポートされている形式
スケジューリングパラメーターの形式表示
ほとんどの場合、スケジューリングパラメーターは、異なる時間データを取得するために使用されます。ビジネス要件に基づいて、時間データを取得するためにタスクのデータタイムスタンプまたはスケジューリング日を使用することを選択できます。DataWorks は、固定形式のデータタイムスタンプおよびスケジューリング日に関連する変数を提供します。次の表に示すメソッドを使用して、カスタム時間形式を指定できます。
時間データを取得する方法
パラメーター形式
パラメーターの例
参照
タスクのデータタイムスタンプに基づいて時間データを取得する
タスクのデータタイムスタンプを使用して時間データを取得するカスタム時間パラメーターは、
${}、yyyy、yy、mm、およびddで構成されます。${} パラメーターを使用して、現在のデータタイムスタンプよりも N年、か月、または日前または後の時間を指定できます。説明タスクの データタイムスタンプ は、スケジューリング時間 の日付から 1 日を引いた値として計算されます。これは、
${yyyymmdd}パラメーターの値が$[yyyymmdd-1]パラメーターの値と同じであることを示します。${yyyymmdd}や$[yyyymmdd-1]などの${…}形式のカスタム時間パラメーターを使用して、時間データを取得できます。例:${yyyymmdd±N}${yyyymmdd±7*N}${yy±N}${mm}${yyyy-mm-dd±N}
${...} 形式のカスタム時間パラメーターのその他の例については、このトピックの「付録 1:パラメーター」セクションを参照してください。
タスクのスケジューリング時間に基づいて時間データを取得する
タスクのスケジューリング時間を使用して時間データを取得するカスタム時間パラメーターは、
$[...]、yyyy、yy、mm、dd、hh24、mi、およびssで構成されます。$[...] パラメーターを使用して、現在のスケジューリング時間よりも N年、か月、日、時間、分、または秒前または後の時間を指定できます。$[yyyymmddhh24miss]などの$[...]形式のカスタム時間パラメーターを使用して、時間データを取得できます。たとえば、$[yyyymmdd-1-1/24]パラメーターを使用して、前日の現在の時間よりも 1 時間前の時間を指定できます。$[...] 形式のカスタム時間パラメーターの例については、このトピックの「付録 1:パラメーター」セクションをご参照ください。
時間または分単位で正確な時間を指定する場合、日付をまたぐ問題が発生する可能性があります。 問題の解決策については、「ノードのインスタンスを当日 00:00 に実行して、前日 23:00 に対応するパーティションのデータを分析します。 ただし、当日 23:00 に対応するパーティションのデータが分析されます。 どうすればよいですか。」をご参照ください。
上記の カスタム時間パラメーターを使用して目的の時間データを取得できない場合は、上記の カスタム時間パラメーターを使用してデータを取得し、次の表に示す 操作を実行してデータを処理することで、目的の時間データを取得することをお勧めします。
サンプル シナリオ
説明
参照
エンジン 関数を呼び出して、時間データを タイムスタンプに変換します。
コード内のエンジン 関数を呼び出して、目的の時間データを取得します。
${mm}01: 毎月の初日を取得します。
文字列を連結して、目的の時間データを取得します。
なし
注意事項
${…} パラメーター
${…} パラメーターは、日単位の精度です。 ${…} パラメーターを使用して、時、分、または秒単位の精度で時間を指定することはできません。たとえば、
${yyyy-mm-dd-1/24}形式で ${…} パラメーターを指定することはできません。年または月単位の時間を指定する場合は、
${…}パラメーターを使用することをお勧めします。たとえば、${yyyy-N}または${mm-N}形式でパラメーターを指定できます。
$[…]パラメーターN 時間前または N 分前の時間を指定する場合は、
$[…]パラメーターを使用します。$[…] パラメーターを使用すると、時、分、または秒単位の精度で時間を指定できます。
$[yyyy-N]または$[mm-N]パラメーターを使用して、N 年前または N か月前の時間を取得することはできません。特定の年または月の時間を指定するには、${...}パラメーターを使用します。秒単位の精度で時間を指定する場合は、
$[...]パラメーターを使用することをお勧めします。例:$[yyyy-mm-dd-1-1/24]。
$[...]パラメーターの値は、タスクに対して生成されたインスタンスが実行される実際の時間によって変化しません。$[...]パラメーターの値は、タスクに対して生成されたインスタンスのスケジュール時刻によって決定されます。値は、インスタンスが生成されるときに決定されます。したがって、$[...] パラメーターの値は、タスクに対して生成されたインスタンスが実行される実際の時間によって変化しません。
説明$[...]パラメーターを使用して時単位の精度で時間を指定する場合、24 時間制と 12 時間制の両方がサポートされています。hh24は 24 時間制を示します。hhは 12 時間制を示します。
${bizdate}変数一部のノードのコードには、
${bizdate}変数が含まれています。この変数に特別な意味はありません。ビジネス要件に基づいて、ノードのコードでカスタム変数名を指定できます。時または分単位の精度で時間を指定した場合に発生する可能性のある日またぎの問題の解決策
時または分単位の精度で時間を指定する場合、日またぎの問題が発生する可能性があります。問題の解決策については、「当日の 00:00 にノードのインスタンスを実行して、前日の 23:00 に対応するパーティションのデータを分析します。ただし、当日の 23:00 に対応するパーティションのデータが分析されます。どうすればよいですか。」をご参照ください。
付録: 参考文献
付録 1: パラメーター
${…} 形式のカスタムパラメーター
次の表は、一般的な時間の形式の例を示しています。
加算または減算する間隔 | カスタムパラメーター |
N 年前または N 年後 |
|
N か月前または N か月後 |
|
N 週間前または N 週間後 |
|
N 日前または N 日後 |
|
N 日前または N 日後 |
|
yyyy 形式の N 年前または N 年後 |
|
yy 形式の N 年前または N 年後 |
|
N か月前またはN 年前の時間を指定するには、${...} パラメーターを使用することをお勧めします。
${…} パラメーターを使用して、N 日、N か月、または N 年のみを加算または減算できます。
$[…] 形式のカスタムパラメーター
次の表は、一般的な時間の形式の例を示しています。
加算または減算する間隔 | カスタムパラメーター |
N 年後 |
|
N 年前 |
|
N か月後 |
|
N か月前 |
|
N 週間前または N 週間後 |
|
N 日前または N 日後 |
|
N 時間前または N 時間後 | 次のいずれかの方法を使用して、N 時間を加算または減算できます。
|
N 分前または N 分後 | 次のいずれかの方法を使用して、N 分を加算または減算できます。
|
hh24(24 時間形式)とhh(12 時間形式)は時間を示します。$cyctime パラメーターの値は、時、分、または秒まで正確です。したがって、$[...] パラメーターの値は、時、分、または秒まで正確です。エンジン関数を使用して、このトピックで説明されていない形式のカスタムパラメーターを指定できます。詳細については、「ノードのインスタンスを当日 00:00 に実行して、前日 23:00 に対応するパーティションのデータを分析します。ただし、当日 23:00 に対応するパーティションのデータが分析されます。どうすればよいですか。」をご参照ください。
N 時間前またはN 分前の時間を指定する場合は、$[...] パラメーターを使用します。
スケジューリングパラメーターの値は、タスクのインスタンスが生成されたときに決定され、インスタンスが実際に実行される時刻によって変化することはありません。
組み込みパラメーター
DataWorks は、次の表で説明されている組み込みパラメーターをサポートしています。組み込みパラメーターは、スケジューリングパラメーターの値として使用できます。ただし、組み込みパラメーターは柔軟ではありません。スケジューリングパラメーターの値として、カスタム時間パラメーターを使用することをお勧めします。
組み込みパラメーター | 説明 |
$bizdate | タスクのデータタイムスタンプ。このパラメーターの値は、 このパラメーターは広く使用されています。デフォルトでは、タスクのデータタイムスタンプは、タスクのスケジュール時刻の 1 日前です。 |
$cyctime | タスクのスケジュール時刻。このパラメーターの値は、 |
$gmtdate | 現在の日付。このパラメーターの値は、 デフォルトでは、このパラメーターの値は現在の日付です。タスクのデータをバックフィルする場合は、このパラメーターを |
$bizmonth | タスクのデータタイムスタンプで指定された月。このパラメーターの値は、
|
$jobid | タスクが属するワークフローの ID。 |
$nodeid | ノード ID。 |
$taskid | ノードに対して生成されたインスタンスの ID。 |
付録 2: スケジューリングパラメーターとノードのデータタイムスタンプ、スケジュール時刻、および実際の実行時間の関係
関係 | 説明と例 |
スケジューリングパラメーターとノードの実際の実行時間の関係 | スケジューリングパラメーターの値は、ノードのインスタンスが生成されたときに決定され、ノードインスタンスが実際に実行される時刻によって変化することはありません。 |
スケジューリングパラメーターとノードのスケジュール時刻の関係 | $[...] パラメーターを使用して時間または分まで正確な時間を指定する場合、$[...] パラメーターの値は、ノードに対して生成されたインスタンスの実行がスケジュールされている時刻であるスケジュール時刻に基づいて決定されます。 ノードが
|
スケジューリングパラメーターとノードのデータタイムスタンプおよびスケジュール時刻の関係 |
付録 3: サポートされている組み込みスケジューリングパラメーター
組み込みスケジューリングパラメーター | 説明 |
${projectId} | MaxCompute プロジェクトの ID。 |
${projectName} | MaxCompute プロジェクトの名前。 |
${nodeId} | ノード ID。 |
${gmtdate} | インスタンスの実行がスケジュールされている日付(yyyy-MM-dd 00:00:00 形式)。 |
${taskId} | タスクインスタンス ID。 |
${seq} | タスクインスタンスのシーケンス番号。これは、同じ日のすべてのインスタンスの中でこのインスタンスのランキングを示します。 |
${cyctime} | インスタンスの実行がスケジュールされている時刻。 |
${status} | インスタンスのステータス。有効な値: SUCCESS および FAILURE。 |
${bizdate} | データタイムスタンプ。 |
${finishTime} | インスタンスの実行が終了した時刻。 |
${taskType} | インスタンスの実行モード。有効な値: NORMAL、MANUAL、PAUSE、SKIP、UNCHOOSE、および SKIP_CYCLE。 |
${nodeName} | ノードの名前。 |
付録 4: 夏時間の説明
DataWorks では、夏時間が開始または終了する日にタスクを正常に実行できます。夏時間の切り替えがタスクの実行に及ぼす影響を回避するには、タスクが存在するリージョンで夏時間が使用されている場合は、「夏時間の切り替えがタスクの実行に及ぼす影響」のトピックを参照することをお勧めします。