SETVARIABLE
入力パラメータの現在の値を指定した値に設定します。指定した値を返します。
タスクの実行時、データ統合は、入出力パラメータの最終的な現在の値と開始値を比較します。入出力パラメータの集計タイプに基づいて、ジョブの詳細に最終的な現在の値が保存されます。この値がオーバーライドされない限り、次回タスクを実行するときは、保存された値が入出力パラメータの初期値として使用されます。
パイプラインの各入出力パラメータで、SETVARIABLE関数を使用するのは、1回のみです。データ統合は、変数関数をマッピングで検出したときにそれらの関数を処理します。データ統合がマッピングで変数関数を検出する順序は、タスクセッションごとに異なります。このため、マッピングで同じ変数関数を複数回使用すると、結果が矛盾する場合があります。
SETVARIABLEは、式トランスフォーメーションで使用できます。
構文
SETVARIABLE( $$Variable, value )
引数 | 必須/ オプション | 説明 |
|---|
$$Variable | 必須 | 設定する入出力パラメータの名前。Max集計型またはMin集計型で設定された入出力パラメータとともに使用します。 |
value | 必須 | 入出力パラメータのカレント値として設定する値。パラメータのデータ型と互換性のあるデータ型に評価する有効な式を使用します。 |
戻り値
入出力パラメータのカレント値。
valueがNULLの場合、データ統合は現在の値である$$Variableを返します。
例
次の式は、データ統合が行を評価したときに入出力パラメータ$$Timeをシステム日付に設定し、このシステム日付をSET_$$TIMEポートに返します。
SETVARIABLE ($$Time, SYSDATE)
TRANSACTION | TOTAL | SET_$$TIME |
|---|
0100002 | 534.23 | 10/10/2016 01:34:33 |
0100003 | 699.01 | 10/10/2016 01:34:34 |
0100004 | 97.50 | 10/10/2016 01:34:35 |
0100005 | 116.43 | 10/10/2016 01:34:36 |
0100006 | 323.95 | 10/10/2016 01:34:37 |
セッションの終了時、データ統合は、最後に評価された$$Timeの現在の値として10/10/2016 01:34:37をジョブの詳細に保存します。次回のタスク実行後、データ統合は、$$Timeに対するすべての参照を10/10/2016 01:34:37と評価します。
次の式は、行に関連付けられているタイムスタンプに入出力パラメータの$$Timestampを設定し、タイムスタンプをSET_$$TIMESTAMPポートに返します。
SETVARIABLE ($$Time, TIMESTAMP)
TRANSACTION | TIMESTAMP | TOTAL | SET_$$TIME |
|---|
0100002 | 10/01/2016 12:01:01 | 534.23 | 10/01/2016 12:01:01 |
0100003 | 10/01/2016 12:10:22 | 699.01 | 10/01/2016 12:10:22 |
0100004 | 10/01/2016 12:16:45 | 97.50 | 10/01/2016 12:16:45 |
0100005 | 10/01/2016 12:23:10 | 116.43 | 10/01/2016 12:23:10 |
0100006 | 10/01/2016 12:40:31 | 323.95 | 10/01/2016 12:40:31 |
セッションの終了時、データ統合は、最後に評価された$$Timestampの現在の値として、10/01/2016 12:40:31をジョブの詳細に保存します。
次回のセッション実行時、データ統合は、$$Timestampの初期値を10/01/2016 12:40:31に設定します。
SETVARIABLE、SETMAXVARIABLE、およびSETMINVARIABLEの違い
SETVARIABLEを使用すると、データ統合は、入出力パラメータを最後に処理された値に設定します。SETMAXVARIABLEまたはSETMINVARIABLEを使用すると、入出力パラメータはデータセット内の最高値または最低値として設定されます。
次の例のデータセットでは、DEPT_NOはint型で、DEPT_NAMEは文字列型です。
DEPT_NO | DEPT_NAME |
|---|
1 | Human Resources |
2 | 研究と開発 |
7 | 財務 |
8 | IT |
5 | マーケティング |
式トランスフォーメーションの関数の1つを含むマッピングタスクを実行します。次の表に、それぞれの関数の結果のパラメータ値を示します。
関数 | 入出力パラメータ値 |
|---|
SETVARIABLE($$p_io_int, DEPT_NO) | 5 |
SETMAXVARIABLE($$p_io_int, DEPT_NO) | 8 |
SETMINVARIABLE($$p_io_int, DEPT_NO) | 1 |
次に、次のような更新されたデータセットを使用して同じマッピングタスクを再実行することを検討してください。
DEPT_NO | DEPT_NAME |
|---|
1 | Human Resources |
2 | 研究と開発 |
7 | 財務 |
8 | IT |
5 | マーケティング |
9 | カスタマサポート |
4 | Sales |
これらの新しい値を使用した場合、これらの関数を使用すると入出力パラメータは次の値に設定されます。
関数 | 入出力パラメータ値 |
|---|
SETVARIABLE($$p_io_int, DEPT_NO) | 5 注: 最後に処理された値が4であっても、最大集計タイプでは大きい方の値が選択されるため、出力値は5のままになります。 |
SETMAXVARIABLE($$p_io_int, DEPT_NO) | 9 注: 9は以前に選択した値8よりも大きいため、最大集計タイプでは出力値が9に更新されます。 |
SETMINVARIABLE($$p_io_int, DEPT_NO) | 1 |