質問
Mapperでスクリプト変数から取得してロジックで変換した値を、入力元のスクリプト変数と、別のスクリプト変数に代入しました。
結果を確認すると、同一のロジックから値を代入していても、別のスクリプト変数にはロジックによって複数回変換された値が代入されました。
この動作は仕様でしょうか。
例 :
・数値の場合
スクリプト変数1 (値 : 0)
ロジックによる変更 : 入力値に 1 を足す
→ スクリプト変数1 (値 : 1)
→ スクリプト変数2 (値 : 2)
・文字列の場合
スクリプト変数1 (値 : A)
ロジックによる変更 : 入力値の最後に A を付与する
→ スクリプト変数1 (値 : AA)
→ スクリプト変数2 (値 : AAA)
・日付の場合
スクリプト変数1 (値 : 2016年)
ロジックによる変更 : 入力値に 1 年足す
→ スクリプト変数1 (値 : 2017年)
→ スクリプト変数2 (値 : 2018年)
回答
■仕様説明
Mapperでは、スクリプト変数に対する値の代入を、内部で決めた順番で実行しています。
そのため、「スクリプト変数1」「スクリプト変数2」があり、「スクリプト変数1」から取得した値をロジックで変換して「スクリプト変数1」と「スクリプト変数2」の両方に代入するように設定している場合、以下のような順番で処理が実行されます。
- 「スクリプト変数1」から取得した値をロジックで変換して、「スクリプト変数1」に代入
- 「スクリプト変数1」から取得した値(※1で変換済)をロジックで変換して、「スクリプト変数2」に代入
したがいまして、「スクリプト変数2」には2回変換処理が実行された値が代入されます。
■対応策
スクリプト変数から取得した値をロジックで変換した後で、元のスクリプト変数と別のスクリプト変数に代入したい場合には、元のスクリプト変数への代入と、別のスクリプト変数への代入を異なるMapperで実行するように設定してください。
例にある「・数値の場合」の場合、スクリプト変数1の値 に1を足す処理と、その結果をスクリプト変数2に代入する処理を、別々のMapperで実行するように設定してください。
コメント
0件のコメント
記事コメントは受け付けていません。