DataWorks では、ノードに対して構成したスケジューリングパラメーターに基づいて、ノードの実行がスケジュールされます。スケジューリングパラメーターの値は、ノードが実行されるたびに、スケジューリングパラメーターの値の割り当てルールに基づいて自動的に置き換えられます。このようにして、スケジューリングパラメーターの値は、ノードのスケジューリング時に動的に置き換えられます。このトピックでは、スケジューリングパラメーターのサポートされている形式と、スケジューリングパラメーターの使用方法について説明します。
背景情報
ノードのコードで ${Variable}
形式で変数を定義し、[スケジューリングパラメーター] セクションの [プロパティ] タブで値として変数に割り当てられているスケジューリングパラメーターを構成すると、ノードが実行されるようにスケジュールされるときに、スケジューリングパラメーターの値がノードコードで動的に置き換えられます。スケジューリングパラメーターの形式は、ノードのタイプによって異なります。たとえば、Shell ノードのスケジューリングパラメーターは、$N 形式でのみ構成できます。N は 1 から始まる整数を指定します。詳細については、「さまざまなタイプのノードのスケジューリングパラメーターを構成する」をご参照ください。
定数をスケジューリングパラメーターに割り当てることができます。ノードのスケジューリングパラメーターに定数を割り当てると、ノードが実行されるたびに同じ値がスケジューリングパラメーターに渡されます。次の図の手順に従って、スケジューリングパラメーターに定数を割り当てることができます。
このトピックでは、スケジューリングパラメーターの構成に基づいて、ノードのコードでスケジューリングパラメーターの値がどのように動的に置き換えられるかについて説明します。
このトピックは、次のセクションで構成されています。
スケジューリングパラメーターのサポートされている形式を理解したら、ビジネス要件に基づいてスケジューリングパラメーターを構成および使用できます。詳細については、このトピックの 次のステップ:スケジューリングパラメーターを構成して使用する セクションをご参照ください。
用語
ほとんどの場合、スケジューリングパラメーターは、動的な時点を指定する場合に使用されます。これらのシナリオでは、スケジューリングパラメーターの値は、ノードの [データタイムスタンプ] または [スケジューリング時間] に基づいて決定されます。スケジューリングパラメーターを構成する前に、ノードのデータタイムスタンプとスケジューリング時間の概念を理解する必要があります。これは、スケジューリングパラメーターの値の形式を構成するのに役立ちます。次の表に、これらの概念について説明します。
用語 | 説明 |
データタイムスタンプ | スケジューリング時間(ノードをスケジュールする時間)の前の日。オフラインコンピューティングのシナリオでは、データタイムスタンプは、ビジネストランザクションが実行された日付を表します。データタイムスタンプの値は、日にちまで正確です。たとえば、当日に前日の売上高の統計データを収集する場合、前日はビジネストランザクションが実行された日付であり、データタイムスタンプを表します。 |
スケジューリング時間 | ビジネ データを処理するためにノードをスケジュールする時間。スケジューリング時間は秒まで正確です。スケジューリング時間は、ノードが実際に実行されるスケジュールされた時間とは異なる場合があります。ノードが実行される実際の時間は、複数の要因の影響を受けます。 |
スケジューリングパラメーターのサポートされている形式
ほとんどの場合、スケジューリングパラメーターは、さまざまな時間データを取得するために使用されます。ビジネス要件に基づいて、時間データを取得するためにノードのデータタイムスタンプまたはスケジューリング時間を使用することを選択できます。
DataWorks は、固定形式の組み込み変数をいくつか提供しています。また、DataWorks では、次の表で説明するメソッドを使用して時間形式をカスタマイズすることもできます。
時間データを取得する方法 | パラメーター形式 | パラメーターの例 | 参照 |
ノードの [データタイムスタンプ] に基づいて時間データを取得する | ほとんどの場合、ノードのデータタイムスタンプを使用して時間データを取得するカスタム時間パラメーターは、 説明 ノードのデータ タイムスタンプは、 |
| 詳細については、「${...} 形式のカスタム時間パラメーターの例」をご参照ください。 |
ノードの [スケジューリング時間] に基づいて時間データを取得する | ほとんどの場合、ノードのスケジューリング時間を使用して時間データを取得するカスタム時間パラメーターは、 |
|
|
上記の カスタム時間パラメーターを使用して目的の時間データを取得できない場合は、上記の カスタム時間パラメーターを使用してデータを取得し、次の表に記載されている操作を実行してデータを処理することで、目的の時間データを取得することをお勧めします。
サンプルシナリオ | 説明 | 参照 |
エンジン関数を呼び出して、時間データをタイムスタンプに変換します。 | ノードのコードでエンジン関数を呼び出して、目的の時間データを取得します。 | |
${mm}01: 各月の初日を取得します。 | 文字列を連結して、目的の時間データを取得します。 | なし |
注意事項
${…}
パラメーター
N 年前または N か月前の時間を指定する場合、${...} パラメーターを使用します。
${…}
パラメーターは、日単位の精度です。${…}
パラメーターを使用して、時間、分、または秒単位の精度で時間を指定することはできません。たとえば、${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}
変数が含まれています。この変数に特別な意味はありません。ビジネス要件に基づいて、ノードのコード内の変数名をカスタマイズできます。
時間または分単位の精度で時間を指定する場合に発生する可能性のある日付をまたぐ問題の解決策
時間または分単位の精度で時間を指定する場合、日付をまたぐ問題が発生する可能性があります。問題の解決策については、「前日の 23:00 に対応するパーティションのデータを分析するために、当日の 00:00 にノードのインスタンスを実行します。ただし、当日の 23:00 に対応するパーティションのデータが分析されます。どうすればよいですか。」をご参照ください。
付録: パラメーター
${...} 形式のカスタム時間パラメーターと $[...] 形式のカスタム時間パラメーターの違いについては、「カスタム パラメーターの比較」トピックの「${...} パラメーターと $[...] パラメーターの違い」セクションをご参照ください。
${...} 形式のカスタム パラメーター
次の表に、一般的な時間形式の例を示します。
加算または減算する間隔 | カスタム パラメーター |
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
パラメーターの値は、時、分、または秒まで正確です。したがって、$[…]
パラメーターの値は、時、分、または秒まで正確です。エンジン関数を使用して、このトピックで説明されていない形式のカスタム パラメーターを指定できます。詳細については、「スケジュール パラメーターの戻り値を処理する」をご参照ください。
N 時間
前またはN 分
前の時間を指定する場合は、$[...]
パラメーターを使用します。スケジュール パラメーターの値は、ノードのインスタンスが生成されたときに決定され、ノード インスタンスが実際に実行される時刻によって変化することはありません。
組み込みパラメーター
DataWorks は、次の表で説明する組み込みパラメーターをサポートしています。組み込みパラメーターは、スケジュール パラメーターの値として使用できます。ただし、組み込みパラメーターは柔軟ではありません。スケジュール パラメーターの値として、カスタム時間パラメーターを使用することをお勧めします。
組み込みパラメーター | 説明 |
$bizdate | ノードのデータ タイムスタンプ。このパラメーターの値は、 このパラメーターは広く使用されています。デフォルトでは、ノードのデータ タイムスタンプは、ノードが実行される予定の時刻の 1 日前です。 |
$cyctime | ノードのスケジュール時刻。このパラメーターの値は、 |
$gmtdate | 現在の日付。このパラメーターの値は、 デフォルトでは、このパラメーターの値は現在の日付です。ノードのデータをバックフィルする場合は、このパラメーターを |
$bizmonth | ノードのデータ タイムスタンプで示される月。このパラメーターの値は、
|
$jobid | ノードが属するワークフローの ID。 |
$nodeid | ノードの ID。 |
$taskid | ノードに対して生成されたインスタンスの ID。 |
付録: スケジューリングパラメーターとデータタイムスタンプ、スケジューリング時間、ノードの実際の実行時間との関係
関係 | 説明と例 |
スケジューリングパラメーターとノードの実際の実行時間との関係 | スケジューリングパラメーターの値は、ノードのインスタンスが生成されたときに決定され、ノードインスタンスが実際に実行される時間によって変化することはありません。 |
スケジューリングパラメーターとノードのスケジューリング時間との関係 | $[...] パラメーターを使用して時間または分単位で正確な時間を指定する場合、$[...] パラメーターの値は、ノードに対して生成されたインスタンスが実行されるようにスケジュールされている時間であるスケジューリング時間に基づいて決定されます。 ノードが
|
スケジューリングパラメーターとノードのデータタイムスタンプおよびスケジューリング時間との関係 |
付録: 夏時間の説明
DataWorks では、ノードは夏時間が開始または終了する日に想定どおりに実行できます。夏時間の切り替えによるノードの実行への影響を回避するために、ノードが存在するリージョンで夏時間が使用されている場合は、シナリオ: 夏時間の切り替えによるノードの実行への影響 トピックを参照することをお勧めします。
次の手順: スケジューリング パラメーターを設定して使用する
サポートされているスケジューリング パラメーターの形式を理解したら、ビジネス要件に基づいてスケジューリング パラメーターを設定して使用できます。詳細については、「スケジューリング パラメーターを設定して使用する」をご参照ください。