入出力パラメータ
入出力パラメータは、カウンタまたはタスクステージを格納する値のプレースホルダです。データ統合では、設定に基づいて実行時にパラメータが評価されます。
入出力パラメータは、永続タスクの変数として機能します。パラメータ値は、タスクの実行中に更新されます。パラメータは、データウェアハウスから最後に記録されたレコードの日付値を格納するほか、緩やかに変化する次元テーブルの更新プロセスを管理するために有用です。
例えば、次のいずれかの方法で入出力パラメータを使用できます。
- 各タスクの実行後に値を更新します。
式トランスフォーメーションでSetVariable、SetMaxVariable、SetMinVariable、またはSetCountVariable関数を使用して、タスクを実行するたびにパラメータ値を更新できます。
タスクの完了後にパラメータ値を表示するには、[すべてのジョブ]または[マイジョブ]ページからジョブの詳細を開きます。これらの値は、Mapping DesignerまたはREST APIで作業している場合にも取得できます。
- データウェアハウスに対するデータの増分ロードを処理します。
その場合、ロード条件を満たすレコードをソースから選択するフィルタ条件を設定します。タスクの実行時に、ロードプロセスをインクリメントする式を追加します。次の条件のいずれかに基づいて、ロードプロセスを定義することもできます。
- - セッションで処理するレコードIDの最大値をキャプチャする式で設定されているレコードの範囲。
- - date/timeの最大値をキャプチャする式のパラメータを使用する時間間隔。この期間の経過後にセッションが終了します。毎日トランザクションを評価およびロードすることをお勧めします。
- 式をパラメータ化します。
- 式をパラメータ化して、タスクの実行時に更新することをお勧めします。文字列またはテキストパラメータを作成し、[式の変数です]を有効にします。式の代わりにパラメータを使用し、実行時にパラメータファイルでパラメータを解決します。
- 例えば、式フィールドパラメータ$$paramを作成し、パラメータ値をパラメータファイル内の次の値で上書きします。
$$param=CONCAT(NAME,$$year)
$$year=2020
- タスクを実行すると、データ統合はNAMEフィールドを2020と連結します。
- ユーザー定義関数をパラメータ化します。
- 入出力パラメータを使用して、式内のユーザー定義関数のすべてまたは一部をパラメータ化します。
- 文字列パラメータを作成し、[式の変数です]を有効にします。式では、入出力パラメータをユーザー定義関数またはユーザー定義関数の引数のプレースホルダとして使用できます。マッピングタスクまたはパラメータファイルでパラメータを実行時に解決します。
注: マッピングタスクの同時実行時に入出力パラメータを使用すると、予期しない結果が生じる可能性があります。
次のトランスフォーメーションでは、入出力パラメータを使用できます。
- •ソース
- •ターゲット
- •アグリゲータ(式マクロでは使用できません)
- •式(式マクロでは使用できません)
- •フィルタ
- •ルータ
- •SQL
- •トランザクションコントロール
入出力パラメータごとに、変数名、データ型、デフォルト値、集計タイプ、保持ポリシーを設定します。実行時に適用される値を含むパラメータファイルを使用することもできます。特定のタスクの実行では、マッピングタスクの値を変更できます。
入力パラメータとは異なり、入出力パラメータはタスクが実行されるたびに変化する可能性があります。タスクが正常に完了すると、パラメータの最新値がジョブの詳細に表示されます。タスクの次回実行時に、マッピングタスクは保存された値と入出力パラメータを比較します。また、マッピングタスクの入出力パラメータをリセットし、保存された値をジョブの詳細に表示することもできます。
詳細モードでは、タスクが実行されるたびに文字列とテキストの入出力パラメータ値が変更されることはありません。マッピングタスクでは常に同じパラメータ値が使用されます。
SQL ELTモードのマッピングでは入出力パラメータを使用できません。
集計タイプ
入出力パラメータの集計タイプに基づいて、タスクの実行時にパラメータの最終的な現在の値が決定されます。変数関数と対応する集計タイプを使用して、実行時にパラメータ値を設定できます。
パラメータごとに、次の集計タイプのいずれかを選択できます。
変数関数
変数関数では、実行時にタスクが入出力パラメータの現在の値を計算する方法を決定します。
式で変数関数を使用して、タスクの実行時にパラメータの現在の値を設定できます。
タスクの実行中を通して、パラメータ値の一貫性を保つには、パラメータ定義で有効な集計タイプを使用します。例えばSetMaxVariable関数は、Min集計タイプではなくMax集計タイプで使用できます。
次の表に、利用可能な変数関数、集計タイプ、および各関数で使用できるデータ型を示します。
変数関数 | 説明 | 有効な集計タイプ | 有効なデータ型 |
---|
SetVariable | パラメータを指定された値に設定します。タスクの実行の最後で、最終的な現在の値と開始時の値が比較されます。集計タイプに基づいて、ジョブの詳細に最終的な値が保存されます。 この関数は、マッピングがデータ統合サーバーで実行される場合にのみ使用できます。 | MaxまたはMin | すべてのトランスフォーメーションのデータ型。 |
SetMaxVariable | パラメータを値のグループの最大値に設定します。 詳細モードでは、この関数は式トランスフォーメーションにのみ使用できます。 | 最大 | すべてのトランスフォーメーションのデータ型(文字列データ型とテキストデータ型を除く)を詳細モードで使用できます。 |
SetMinVariable | パラメータを値のグループの最小値に設定します。 詳細モードでは、この関数は式トランスフォーメーションにのみ使用できます。 | 最小 | すべてのトランスフォーメーションのデータ型(文字列データ型とテキストデータ型を除く)を詳細モードで使用できます。 |
SetCountVariable | パラメータ値を1ずつインクリメントします。 詳細モードでは、この関数は式トランスフォーメーションにのみ使用できます。非決定的なCOUNT戻り値を回避するために、ターゲットトランスフォーメーションの直前にSetCountVariable関数を設定します。例えば、複数のダウンストリームパイプラインを含むトランスフォーメーションの前にSetCountVariable関数を設定した場合、生成されるCOUNT値は実際の行数のn倍になる可能性があります。 | 合計数 | IntegerおよびBigint |
注: パイプライン内の各入出力パラメータで、変数関数を1回使用します。実行時にマッピング内で関数が見つかるたびに、タスクは各関数を評価します。その結果、タスクが実行されるたびに、異なる順番で関数が評価される可能性があります。このため、マッピングで同じ変数関数を複数回使用すると、結果が矛盾することがあります。
入出力パラメータのプロパティ
定義する各入出力パラメータのパラメータプロパティを指定します。
次の表に、入出力パラメータのプロパティを示します。
入出力パラメータのプロパティ | 説明 |
---|
名前 | 必須。パラメータの名前。 パラメータ名には、テキスト文字列CurrentTaskName、CurrentTime、LastRunDate、またはLastRunTimeを含めることはできません。 |
説明 | オプション。ジョブの詳細およびマッピングタスクのパラメータと共に表示される説明。 最大長は255文字です。 |
データ型 | 必須。パラメータのデータ型。 注: 互換性のある集計タイプを選択します。例えばstringを選択した場合は、カウント集計タイプとともに設定できません。 |
精度 | 必須。パラメータの精度。 |
スケール | オプション。パラメータの位取り。 |
式の変数です | オプション。データ統合がパラメータ値を式として解決するかどうかを管理します。 パラメータをリテラル文字列として解決するには無効にします。 データ型がStringまたはTextの場合に適用されます。デフォルトでは無効になっています。 詳細モードでは適用されません。詳細モードでのマッピングは、パラメータ値をリテラル文字列として解決します。 |
デフォルト値 | オプション。パラメータのデフォルト値です。マッピングが初めて実行されるときに初期値になる場合があります。 datetime変数には、次のいずれかの形式を使用します。 - - MM/DD/RR
- - MM/DD/YYYY
- - MM/DD/YYYY HH24:MI
- - MM/DD/RR HH24:MI
- - MM/DD/RR HH24:MI:SS
- - MM/DD/YYYY HH24:MI:SS
- - MM/DD/RR HH24:MI:SS.NS
- - MM/DD/YYYY HH24:MI:SS.NS
|
保持ポリシー | 必須。タスクの完了ステータスと保持ポリシーに基づいて、マッピングタスクが現在の値を保持するタイミングを設定します。 次のいずれかのオプションを選択します。 - - 成功時または警告時(詳細モードでは適用されません)
- - 成功時
- - 警告時(詳細モードでは適用されません)
- - 保存しない
|
集計タイプ | 必須。変数の集計タイプ。実行できる計算のタイプと利用可能な変数関数を決定します。 次のいずれかのオプションを選択します。 - - ソースから読み取られる行数をカウントする[合計数]。
- - 値のグループの最大値を決定する[最大]。
- - 値のグループの最小値を決定する[最小]。
|
入出力パラメータ値
入出力パラメータは、実行時にタスクによって適用される値のプレースホルダです。マッピングで入出力パラメータの値を定義し、マッピングタスクを設定するときにその値を編集できます。
マッピングタスクでは、次の値を使用して実行時に入出力パラメータを評価します。
- •デフォルト値。入出力パラメータの設定で指定された値。
- •値。タスクの進行に応じたパラメータの現在の値。タスクの開始時は、値はデフォルト値と同じです。タスクが進行すると、タスクはパラメータに設定された関数を使用して値を計算します。タスクは、各行がマッピングに渡されるときに値を評価します。デフォルト値と異なり、値は変化する可能性があります。タスクの実行後に、最終値がジョブの詳細に保存されます。
マッピングタスクは、実行時に次の順番で、これらの場所のいずれかにある値を検索します。
- 1パラメータファイル内の値
- 2前回のタスクの実行で保存された値
- 3マッピングでのデフォルト値
- 4データ型のデフォルト値
保存された値をオーバーライドする場合は、パラメータファイルで入出力パラメータの値を定義します。タスクで使用されるのは、パラメータファイル内の値です。
入出力パラメータのルールおよびガイドライン
以下のルールおよびガイドラインに従う必要があります。
入出力パラメータの作成
Mapping DesignerまたはMapplet Designerから入出力パラメータを設定できます。
- 1Mapping DesignerまたはMapplet Designerで、入出力パラメータを使用するトランスフォーメーションを追加し、アップストリームトランスフォーメーションを追加します。
- 2[パラメータ]パネルを開きます。
入出力パラメータが入力パラメータの真下に表示されます。
- 3入出力パラメータを追加します。
- 4パラメータのプロパティを設定します。
- 5マッピングの実行時に値を設定するトランスフォーメーションの変数として、パラメータを使用します。
入出力パラメータのプロパティと[パラメータ]パネルの詳細については、
入出力パラメータのプロパティおよび
Mapping Designerを参照してください。
マッピングタスクでの入出力パラメータの編集
入出力パラメータは、マッピング内の値のプレースホルダです。実行時に適用する値がタスクにより決定されます。ユーザーはマッピング内の入出力パラメータを設定して、マッピングタスクで値を編集できます。
入出力パラメータを含むマッピングをデプロイする場合、パラメータ値は実行時にパラメータの保持ポリシーに基づいて設定されます。マッピングタスクは、デフォルトで、最後のセッション中に設定された値を保持します。必要に応じて、マッピングタスクの値をリセットできます。
マッピングタスクウィザードから、入出力パラメータに対して次のアクションを実行できます。
- •マッピング内のすべての入出力パラメータの値を表示します。この値はタスクを実行するたびに変化する可能性があります。
- •設定をデフォルト値にリセットします。[更新]をクリックして、1つのパラメータをリセットします。すべてのパラメータをリセットするには、[すべて更新]をクリックします。
- •特定の構成の詳細を編集または変更します。[編集]をクリックします。
例えば次の図は、「Timestamp」パラメータの構成の詳細と、最後のセッションの終了時の値を示しています。
ジョブの詳細での入出力パラメータの表示
タスクの実行後に、入出力パラメータの値を検索するには、ジョブの詳細を表示します。ジョブの詳細を表示するには、モニタを開いて[すべてのジョブ]を選択するか、データ統合を開いて[マイジョブ]を選択します。次に、ジョブ名をクリックします。
次の図は、マッピングタスクの最後の実行時に設定された、指定したパラメータの現在の値を含む、利用可能な詳細の例を示しています。
入出力パラメータは、各パラメータに設定した保持ポリシーに基づいて、ジョブの詳細に表示されます。
入出力パラメータの例
永続タスク変数として入出力パラメータを使用し、データの増分ロードを管理できます。
次の例では、入出力パラメータを使用してタスクの日付カウンタを設定し、ソースの増分読み取りを実行します。タスクが実行されるたびに、タスクのオーバーライドを手動で入力してソースデータをフィルタリングするのではなく、マッピングはパラメータ$$IncludeMaxDateを含めます。
ここで示す例では、入出力パラメータは、MM/DD/YYYY形式をサポートする日付フィールドです。この形式をサポートするために、式トランスフォーメーションのSetVariable関数と文字列データ型を使用できます。
Mapping Designerで、[パラメータ]パネルを開き、次の図に示すように入出力パラメータを設定します。
マッピング例には、次のトランスフォーメーションが含まれています。
- •ソーストランスフォーメーションでは次のフィルタを適用し、トランザクション日付TIMESTAMPが入出力パラメータ$$IncludeMaxDateより大きいユーザーテーブルから行を選択します。
users.TIMESTAMP > '$$IncludeMaxDate'
ソーストランスフォーメーションでは、さらに次のソート順を出力に適用して、次回トランスフォーメーションでの式を簡素化します。
users.TIMESTAMP (Ascending)
- •式トランスフォーメーションには、$$IncludeMaxDateの現在の値を設定する簡易式が含まれています。
式の出力フィールドOutMaxDateはstring型で、式の出力をターゲットにマップするために使用できます。
SetVariable関数は、セッションが実行されるたびに、現在のパラメータ値を設定します。例えば$$IncludeMaxDateのデフォルト値を2016-04-04に設定すると、タスクの最初の実行時に、2016-04-04付けの行が読み取られます。セッションが完了したときに、タスクによって$$IncludeMaxDateが2016-04-04に設定されます。次回セッションの実行時には、ソースフィルタに基づいて、2016-04-04より後の日付の行が読み取られます。
OutMaxDateの保存された式を確認できます。この式では、ソースカラムをYYYY-MM-DD形式のDATE_IDに変換します。
- •ターゲットトランスフォーメーションでは、式の出力フィールドをターゲットカラムにマップします。
マッピングの実行時に、OutMaxDateにタスクが最後にレコードをロードした日付が含まれます。
詳細モードでの入出力パラメータの例
永続タスク変数として入出力パラメータを使用し、データの増分ロードを管理できます。
次の例では、入出力パラメータを使用してタスクの日付カウンタを設定し、ソースの増分読み取りを実行します。タスクが実行されるたびにタスクのオーバーライドを手動で入力してソースデータをフィルタリングする代わりに、マッピングにはパラメータ$$IncludeMaxDateが含まれています。この例は、増分タイムスタンプカラムを持つリレーショナルデータベースソースに基づいています。
この例の概要は次のとおりです。
- 1マッピングを作成します。
- 2入出力パラメータを作成して定義します。
- 3ソーストランスフォーメーションでフィルタ条件とソースを設定します。
- 4式トランスフォーメーションを追加し、SetMaxVariable関数を設定します。
- マッピングの作成
- マッピングには、デフォルトでソーストランスフォーメーションとターゲットトランスフォーメーションが含まれています。
- 次の図に、完全に設定されたマッピングを示します。
- 入出力パラメータの作成と定義
- 入出力パラメータは、MM/DD/YYYY HH24:MI:SS.NS形式を使用する日付フィールドです。
- Mapping Designerで、[パラメータ]パネルを開き、次の図に示すように入出力パラメータを設定します。
- ソーストランスフォーメーションでのフィルター条件とソースの設定
- ソーストランスフォーメーションのソースフィルタリングオプションを使用して次のフィルタを適用し、トランザクション日付TIMESTAMPが入出力パラメータ$$IncludeMaxDateより大きいユーザーテーブルから行を選択します。
users.TIMESTAMP > '$$IncludeMaxDate'
- 式トランスフォーメーションの追加とSetMaxVariable関数の設定
- 式トランスフォーメーションには、$$IncludeMaxDateの現在の値を設定する簡易式が含まれています。
[新しいフィールド]ダイアログボックスには、[フィールドタイプ]に[変数フィールド]、[名前]に[VariableMaxDate]、[型]に[日付/時刻]、[精度]に[29]と表示されています。
SetMaxVariable関数は、タスクが実行されるたびに、現在のパラメータ値を設定します。例えば$$IncludeMaxDateのデフォルト値を2021/01/01/11 01:59.00に設定すると、タスクの最初の実行時に、2021年1月1日の行が読み取られます。最初のタスク実行では、要件に基づいて開始日を指定します。セッションが完了したときに、タスクによって$$IncludeMaxDateが01/11/2021 10:00:00.00に設定されます。次回タスクを実行すると、ソースフィルタリングオプションの設定に基づいて、日付/時刻の値が01/11/2021 10:00:00.00より大きい行が読み取られます。
- VariableMaxDateに保存された式を表示できます。
マッピングが正常に実行された後に、入出力パラメータには、タスクがデータをロードした最後の日付が含まれます。
式変数としての入出力パラメータの使用
入出力パラメータを式変数として設定し、それを使用して式またはユーザー定義関数をパラメータ化します。入出力パラメータを式変数として使用するには、文字列パラメータを作成し、[式の変数です]オプションを有効にします。詳細モードでは、入出力パラメータを式変数として使用することはできません。
[式の変数です]が有効になっている場合、データ統合はパラメータを式として解決します。このオプションが無効になっている場合、データ統合はパラメータをリテラル文字列として解決します。
次のトランスフォーメーションでは、入出力パラメータを式の変数として使用できます。
実行時に、パラメータファイルで指定した値でパラメータを上書きできます。
1マッピングで、入出力パラメータを作成します。
2パラメータのプロパティを設定します。
3データ型を文字列またはテキストに設定します。
4[式の変数です]オプションを有効にします。
5パラメータを式またはユーザー定義関数として使用します。
6必要に応じて、次のいずれかの場所でパラメータのデフォルト値を上書きできます。
- - パラメータファイル内。タスクの[ランタイムオプション]タブでパラメータファイルの名前と場所を入力します。
タスクの実行時に、データ統合はパラメータを式として解決します。
ソースクエリとしての入出力パラメータの使用
入出力パラメータをソースクエリのプレースホルダとして使用できます。入出力パラメータをソースクエリとして使用するには、文字列パラメータを作成し、デフォルトのクエリ値を定義して、ソーストランスフォーメーションプロパティの[クエリ]ダイアログにパラメータを入力します。
入出力パラメータをソースクエリとして使用する場合、デフォルトのパラメータ値に有効なクエリを指定する必要があります。データ統合は、デフォルトのクエリを使用して設計時のソースメタデータを生成します。データ統合はこのメタデータを使用して、フィールドを、実行時に使用するクエリのフィールドにマッピングします。データ統合が設計時メタデータを生成できない場合、タスクは失敗します。
入出力パラメータは、ソーストランスフォーメーションを設定する前または後に作成できます。ただし、デフォルトのパラメータ値を定義する前にソーストランスフォーメーションを設定する場合は、タスクを実行する前に[フィールド]タブでソースフィールドを同期する必要があります。
1Mapping Designerで、入出力パラメータを作成し、デフォルトのクエリを入力します。
2ソーストランスフォーメーションを設定します。
3ソースタイプとして[クエリ]を選択し、[クエリ]ダイアログに次の形式で入出力パラメータを入力します。
$$<parameter name>
4マッピングタスクで、次のいずれかのアクションを実行します。
- - [ソース]タブで、実行時に使用するクエリを入力します。
- - [スケジュール]タブまたは[ランタイムオプション]タブで、パラメータファイルの詳細を入力します。