E-MapReduce (EMR) ワークフローは、組み込み時間パラメーター、タスクパラメーター (ローカルパラメーター)、ワークフローパラメーター (グローバルパラメーター)、およびプロジェクトパラメーターを提供します。EMR ワークフローは、パラメーター受け渡し機能もサポートしています。
パラメーターの設定
組み込み時間パラメーター
パラメーターの定義
組み込み時間パラメーターを定義する必要はありません。タスクで直接使用できます。
パラメーターの使用
EMR ワークフローは、$[...] 形式の組み込み時間パラメーターをサポートしています。$[yyyyMMddHHmmss] 形式の組み込み時間パラメーターは、$[yyyyMMdd]、$[HHmmss]、$[yyyy-MM-dd] など、複数の形式に分割して再結合できます。組み込み時間パラメーターを変更するには、次のいずれかの方法を使用します。
add_months()関数を使用します。この関数は、月を加算または減算するために使用されます。次の例では、括弧内の最初のパラメーター[yyyyMMdd]は、返される時間の形式を示しています。括弧内の 2 番目のパラメーターは、加算または減算する月の数を示しています。N 年を加算する:
$[add_months(yyyyMMdd,12*N)]N 年を減算する:
$[add_months(yyyyMMdd,-12*N)]N か月を加算する:
$[add_months(yyyyMMdd,N)]N か月を減算する:
$[add_months(yyyyMMdd,-N)]
カスタム時間パラメーターに +Number または -Number を追加します。
N 週間を加算する:
$[yyyyMMdd+7*N]N 週間を減算する:
$[yyyyMMdd-7*N]N 日を加算する:
$[yyyyMMdd+N]N 日を減算する:
$[yyyyMMdd-N]N 時間を加算する:
$[HHmmss+N/24]N 時間を減算する:
$[HHmmss-N/24]N 分を加算する:
$[HHmmss+N/24/60]N 分を減算する:
$[HHmmss-N/24/60]
タスクパラメーター
タスクパラメーターは、ローカルパラメーターとも呼ばれ、ノードに対して有効です。デフォルトでは、ノードの作成時に定義されたカスタムパラメーターは、現在のノードにのみ適用されます。パラメーターを現在のノードの子孫ノードに渡すことができるように指定すると、パラメーターは現在のノードの子孫ノードに適用できます。
パラメーターの定義
[現在のノード設定] ダイアログボックスで、
の下の アイコンをクリックして、1 つ以上カスタムパラメーターを追加します。次の図は、カスタムパラメーターを定義する方法を示しています。
この例で定義されているカスタムパラメーター:
dt: カスタムパラメーターの名前。IN: パラメーターが現在のノードにのみ適用されることを指定します。値 OUT は、パラメーターを現在のノードの子孫ノードに渡すことができることを指定します。VARCHAR: パラメーターのデータ型。$[yyyy-MM-dd]: パラメーターの値。
パラメーターの使用
ノードを作成するときは、${...} 形式でローカルパラメーターを指定します。
ワークフローパラメーター
ワークフローパラメーターは、グローバルパラメーターとも呼ばれ、ワークフローのすべてのノードに対して有効であり、ワークフローの保存時に設定されます。
パラメーターの定義
ワークフローを保存するときに、1 つ以上のグローバルパラメーターを追加し、パラメーターの名前と値を指定できます。

パラメーターの使用
ワークフローを保存するときは、${...} 形式でグローバルパラメーターを指定します。
プロジェクトパラメーター
プロジェクトパラメーターは、プロジェクト内のすべてのワークフローに対して有効です。
パラメーターの定義
プロジェクトパラメーターを定義するには、次の操作を実行します。プロジェクトの詳細ページで、左側のナビゲーションウィンドウの を選択します。[プロジェクトパラメーター] ページで、[パラメーターの作成] をクリックします。[パラメーターの作成] ダイアログボックスで、[パラメーター名] パラメーターと [パラメーター値] パラメーターを構成します。

パラメーターの使用
ノードを作成するときは、${...} 形式でプロジェクトパラメーターを指定します。
パラメーターの受け渡し
EMR ワークフローでは、ノード間でパラメーターを受け渡すことができます。ノードのパラメーターをノードの子孫ノードに渡すことができます。
ノードのカスタムパラメーターを定義するときに、[OUT] を選択して、カスタムパラメーターを現在のノードの子孫ノードに渡すことができるように指定します。さらに、現在のノードのスクリプトに echo 文を入力する必要があります。echo 文の形式は、echo "#{setValue(key=value)}" です。この文では、key は OUT タイプのカスタムパラメーターの名前を示します。 value は、現在のノードの子孫ノードに渡す値を示し、定数、別のタスクパラメーターの値、または bash スクリプトの変数の値を指定できます。ノードからその子孫ノードに渡されるパラメーターを使用するには、子孫ノードに対して ${...} 形式でパラメーターを指定するだけで済みます。
例:
定数の受け渡し
ノードを作成するときに、OUT タイプの res という名前のカスタムパラメーターを定義し、スクリプトに echo "#{setValue(res=1234)}" と入力します。このようにして、値が 1234 の res パラメーターを現在のノードの子孫ノードに渡すことができます。

タスクパラメーターの受け渡し
ノードを作成するときに、IN タイプの param という名前のカスタムパラメーターを定義し、その値を 123 に設定します。次に、OUT タイプの res という名前の別のカスタムパラメーターを定義し、スクリプトに echo "#{setValue(res=${param})}" と入力します。このようにして、res パラメーターを使用して、値が 123 の param パラメーターを現在のノードの子孫ノードに渡すことができます。

bash スクリプトの変数の受け渡し
ノードを作成するときに、OUT タイプの res という名前のカスタムパラメーターを定義し、スクリプトに echo "#{setValue(res=${RESULT})}" と入力します。このようにして、res パラメーターを使用して、値が 123 の RESULT 変数を現在のノードの子孫ノードに渡すことができます。

パラメーターの優先順位
EMR ワークフローを使用する場合、次のタイプのパラメーターが関係します。
異なるタイプのパラメーターが複数あり、同じ名前の場合、指定されたパラメーター値は、次の優先順位に基づいて適用されます。タスクパラメーター (ローカルパラメーター) > ノードの子孫ノードに渡されるパラメーター > ワークフローパラメーター (グローバルパラメーター) > プロジェクトパラメーター。