SQL ノードやバッチ同期ノードを含むほとんどのノードタイプでは、同じ方法でスケジューリングパラメーターを定義および参照します。PyODPS ノードは文字列置換の代わりに辞書オブジェクトを介してパラメーターを取得し、汎用 Shell ノードは名前付き変数の代わりに位置変数を使用するなど、2 種類のノードは動作が異なります。このトピックでは、各ノードタイプの設定例を紹介します。
SQLノードとバッチ同期ノード
ODPS SQL などの SQL ノードとバッチ同期ノードは、スケジューリングパラメーターの設定に同じ方法を使用します。この方法は、他のほとんどのノードタイプにも適用されます。このトピックでは、ODPS SQL ノードを例に、組み込み変数とカスタムパラメーターに値を割り当て、コードで参照する方法を説明します。
一部のノードはスケジューリングパラメーターをサポートしていない場合があります。特定のノードタイプがスケジューリングパラメーターをサポートしているかどうかについては、そのノードタイプのドキュメントをご参照ください。
パラメーターの割り当てエリアでパラメーターに値を割り当て、コードエリアで組み込み変数 var1 と var3、カスタムパラメーター var2 と var4、および定数 var5 を参照します。以下に値の割り当て例を示します:
-
組み込み変数
var1に業務日付を割り当てます:var1=$bizdate -
組み込み変数
var3にスケジュール時刻を割り当てます:var3=$cyctime -
カスタムパラメーター
var2に業務日付を割り当てます:var2=${yyyymmdd} -
カスタムパラメーター
var4にスケジュール時刻を割り当てます:var4=$[yyyymmddhh24:mi:ss] -
var5に定数abcを割り当てます:var5=abc
スケジュール時刻を基準とした相対時間 (たとえば、1 時間前や N 分前) を取得するには、スケジュール時刻パラメーター ($[...]) にオフセット計算を適用できます。時間オフセットには N/24 を、分オフセットには N/24/60 を使用します。ここで、N はオフセットする時間数または分数です。時間および分のオフセットは、スケジュール時刻に対してのみサポートされています。業務日付 (${...}) は、これらのオフセットをサポートしていません。以下の例では、「1 時間前を取得する」を例に説明します。
-
スケジュール時刻の 1 時間前を取得します (yyyymmddhh24miss 形式の完全なタイムスタンプ):
$[yyyymmddhh24miss-1/24] -
1 時間前の「時」のみを取得します (24 時間形式):
$[hh24-1/24] -
1 時間前の「時、分、秒」を取得します:
$[hh24miss-1/24] -
1 時間前の時刻の日付部分 (yyyymmdd 形式) を取得します:
$[yyyymmdd-1/24] -
前日、かつ 1 時間前の時刻を取得します:
$[yyyymmdd-1-1/24] -
スケジュール時刻から 15 分を引いた時刻を取得します:
$[yyyymmddhh24miss-15/24/60]
時間と分のオフセット計算では、日をまたぐ場合があります。サポートされている割り当て形式の完全なリストと、日をまたぐ場合の処理に関する情報については、「サポートされているスケジューリングパラメーターの形式」をご参照ください。
PyODPSノード
コードインジェクションを防ぐため、PyODPS ノードでは、${param_name} 文字列置換構文を使用してコード内で直接変数を定義することはできません。コードを実行する前に、dict 型 (辞書オブジェクト) の args グローバル変数からスケジューリングパラメーターを取得する必要があります。パラメーターの割り当て方法は、他のノードタイプと同じです。
PyODPS ノードのコードエディターでは、args 辞書を使用してスケジューリングパラメーター (args['var1']、args['var2']、args['var3'] など) を参照し、print を使用してパラメーター値を出力します。 右側の [スケジューリング設定] パネルの [スケジューリングパラメーター] セクションで、これらのパラメーターに値を割り当てます。
パラメーター割り当てエリアでパラメーターに値を割り当て、コードエリアで組み込みパラメーター var1 とカスタムパラメーター var2 および var3 を参照します。辞書オブジェクトが追加されると、パラメーターは args['var1']、args['var2'] 、および args['var3'] になります。値を割り当てる方法を次の例に示します。
-
組み込み変数
var1に業務日付を割り当てます:var1=$bizdate -
カスタムパラメーター
var2に業務日付を割り当てます:var2=${yyyymmdd} -
カスタムパラメーター
var3にスケジュール時刻を割り当てます:var3=$[yyyymmdd]
汎用 Shell ノードの設定例
一般的な Shell ノードの変数に、カスタム名を付けることはできません。変数は $1、$2、$3 のように、昇順の連番で命名する必要があります。パラメーターの数が 10 を超える場合は、${10} 構文を使用して変数を宣言します。
Shell ノードの 10 番目以降のパラメーターは、${10} 形式を使用して参照します (例: echo ${10})。
パラメーターの割り当てエリアでパラメーターに値を割り当て、コードエリアで組み込み変数 $1 とカスタムパラメーター $2 と $3 を参照します。以下に値の割り当て例を示します:
汎用 Shell ノードは、式ベースのパラメーター割り当てのみをサポートします。複数のパラメーター割り当てはスペースで区切ります。値は、定義された順序でパラメーターに対応します。たとえば、Shell ノードで定義された最初のパラメーターは $1 であるため、パラメーター割り当て領域の最初の値 ($bizdate) は $1 に割り当てられます。
-
組み込み変数
$1に業務日付を割り当てます:$bizdate -
カスタムパラメーター
$2に業務日付を割り当てます:${yyyymmdd} -
カスタムパラメーター
$3にスケジュール時刻を割り当てます:$[yyyymmdd]
サポートされているスケジューリングパラメーターの割り当て形式の詳細については、「サポートされているスケジューリングパラメーターの形式」をご参照ください。スケジューリングパラメーターの設定と使用の完全なワークフローについては、「スケジューリングパラメーターの設定と使用」をご参照ください。
バッチ同期の例
Data Integration でスケジューリングパラメーターを使用する一般的なシナリオについては、「バッチ同期タスクでのスケジューリングパラメーターの使用」をご参照ください。