ほとんどのノードタイプ (MaxCompute SQL ノードなど) では、スケジューリングパラメーターを同じ方法で設定します。ただし、共通シェルノードと PyODPS ノードではプロセスが異なります。このトピックでは、さまざまなノードタイプの設定例を示します。
SQL ノードとバッチ同期ノード
SQL ノードとバッチ同期ノードの設定は、ほとんどのノードタイプを代表するものです。この例では、MaxCompute SQL ノードを使用して、組み込みシステム変数とカスタムパラメーターに値を割り当て、コード内でそれらを参照する方法を示します。
すべてのノードがスケジューリングパラメーターをサポートしているわけではありません。特定のノードがサポートしているかどうかを確認するには、「ノード開発」ドキュメントをご参照ください。
パラメーターの定義
パラメーター
値
var1
$bizdate
var2
${yyyymmdd}
var3
$cyctime
var4
${yyyymmddhh24:mi:ss}
var5
abc
パラメーターの使用
-- データタイムスタンプの取得 SELECT '${var1}' '${var2}'; -- スケジューリング時間の取得 SELECT '${var3}' '${var4}'; -- 定数の取得 SELECT '${var5}';
スケジューリングパラメーターセクションで値を割り当てた後、コード内でそれらを参照できます。この例では、組み込みシステム変数 var1 と var3、カスタムパラメーター var2 と var4、および定数 var5 への参照を示しており、以下の割り当てが行われています:
パラメーター var1 にデータタイムスタンプを割り当てます:
var1=$bizdateパラメーター var3 にスケジューリング時間を割り当てます:
var3=$cyctimeパラメーター var2 にデータタイムスタンプを割り当てます:
var2=${yyyymmdd}パラメーター var4 にスケジューリング時間を割り当てます:
var4=$[yyyymmddhh24:mi:ss]定数
abcをパラメーター var5 に割り当てます:var5=abc
詳細については、「ノードのスケジューリングパラメーターの設定」および「スケジューリングパラメーターのソースと式」をご参照ください。
PyODPS ノード
コードの直接的な変更を防ぐため、PyODPS ノードは ${param_name} フォーマットによる文字列置換をサポートしていません。代わりに、グローバルな args 辞書オブジェクトからスケジューリングパラメーターを取得します。
パラメーターの定義
パラメーター
値
var1
$bizdate
var2
${yyyymmdd}
var3
$[yyyymmdd]
パラメーターの使用
# カスタムパラメーター:var1 は組み込みパラメーターの値を取得します。 a =args['var1'] print (format(a)) # カスタムパラメーター:var2 は ${...} フォーマットを使用して値を取得します。 b =args['var2'] print (format(b)) # カスタムパラメーター:var3 は $[...] フォーマットを使用して値を取得します。 c =args['var3'] print (format(c))
上記の例で示すように、スケジューリングパラメーターセクションで値を割り当てます。コード内では、args['var1']、args['var2']、args['var3'] のように辞書オブジェクトを使用してパラメーターを参照します。以下の例は、その割り当てを示しています:
パラメーター var1 にデータタイムスタンプを割り当てます:
var1=$bizdateパラメーター var2 にデータタイムスタンプを割り当てます:
var2=${yyyymmdd}パラメーター var3 にデータタイムスタンプを割り当てます:
var3=$[yyyymmdd]
詳細については、「ノードのスケジューリングパラメーターの設定」および「スケジューリングパラメーターのソースと式」をご参照ください。
Python ノード
Python ノードは、スケジューリングパラメーターをコマンドライン引数として受け取ります。スケジューリングパラメーターセクションでパラメーター値を順番にリストすると、システムはそれらをランタイムにスクリプトに渡します。コード内では、sys.argv[1] や sys.argv[2] のようなインデックスを使用してこれらの値にアクセスできます。
PyODPS ノードとは異なり、Python ノードは $var1 のような名前でパラメーターを直接参照することをサポートしていません。代わりに、パラメーターは sys.argv を使用して位置に基づいて読み取られます。
パラメーターの定義
Python ノードの場合、値をスペース区切りのリストとして割り当てます。値は式または定数にすることができ、位置によってスクリプトの引数にマップされます。
$[yyyymmdd] abcパラメーターの使用
import sys # 受信したすべてのパラメーターを出力 print("Current received parameters:", sys.argv) # 1番目と2番目のパラメーターを取得 param1 = sys.argv[1] param2 = sys.argv[2] print("Parameter 1:", param1) print("Parameter 2:", param2)
上記の例で示すように、スケジューリングパラメーターセクションでパラメーターに値をスペースで区切って割り当てます。その後、コード内で sys.argv[1] や sys.argv[2] のようなインデックスを使用して値にアクセスします。以下の例は、その割り当てを示しています:
最初のパラメーターにスケジューリング時間を割り当てます:
$[yyyymmdd]。2番目のパラメーターに定数
abcを割り当てます:abc。
詳細については、「ノードのスケジューリングパラメーターの設定」および「スケジューリングパラメーターのソースと式」をご参照ください。
共通シェルノード
共通シェルノードは、名前付き変数の代わりに位置パラメーター ($1、$2、$3 など) を使用します。9番目以降のパラメーターには、${10} 構文を使用します。
パラメーターの定義
共通シェルノードの場合、値をスペース区切りのリストとして割り当てます。値の順序は、スクリプト内の位置パラメーターの順序と一致する必要があります。
$bizdate ${yyyymmdd} $[yyyymmdd]パラメーターの使用
# 位置パラメーター:組み込みパラメーターの値を取得します。 echo $1 # 位置パラメーター:${...} フォーマットを使用して値を取得します。 echo $2 # 位置パラメーター:$[...] フォーマットを使用して値を取得します。 echo $3
スケジューリングパラメーターセクションで値を割り当てた後、コード内でそれらを位置パラメーター $1、$2、$3 として参照します。この例での割り当ては次のとおりです:
位置パラメーター $1 にデータタイムスタンプを割り当てます:
$bizdate位置パラメーター $2 にデータタイムスタンプを割り当てます:
${yyyymmdd}位置パラメーター $3 にスケジューリング時間を割り当てます:
$[yyyymmdd]
詳細については、「ノードのスケジューリングパラメーターの設定」および「スケジューリングパラメーターのソースと式」をご参照ください。