フィールドマッピング 同期 タスクでフィールドマッピングを構成し、ソースカラムをターゲットカラムとマッピングします。
同期 タスクウィザードの[フィールドマッピング] ページでフィールドマッピングを構成します。
少なくとも1つのソースカラムを1つのターゲットカラムにマッピングする必要があります。互換性のあるデータ型のカラムをマッピングするか、データ型を適切に変換するフィールド式を作成します。
同期 タスクでは、タスク操作に応じて、特定のフィールドをフィールドマッピングに含める必要があります。デフォルトでは、同期 タスクは必須フィールドをマッピングします。フィールドマッピングを設定する場合、必須フィールドが必ずマッピングされるようデフォルトのままにします。必須フィールドをマッピングしないと、同期 タスクは失敗します。
次の表は、データベースターゲットに適用される各タスク操作に必要なフィールドを示しています。
必須フィールド
タスク操作
説明
プライマリキー
削除
更新
更新/挿入
プライマリキーカラムをマッピングして、同期 タスクが、データベースターゲットで削除、更新、または更新/挿入するレコードを特定できるようにします。
非NULLフィールド
挿入
更新
更新/挿入
データベースでNULLにできないすべてのフィールドをマッピングします。
フィールドマッピングを設定する際には、次のタスクも実行できます。
• フィールドのデータ型を編集する。• フィールドマッピングにマップレットを追加する。• ルックアップを作成する。フィールドのデータ型 同期 タスクを作成すると、データ統合 はソースとターゲットの各フィールドにデータ型を割り当てます。同期 タスクウィザードの[フィールドマッピング] ページでフィールドデータ型を編集できます。データ統合 コネクタのソースとターゲット、およびマップレットを除く任意のソースまたはターゲットのタイプのフィールドデータ型を編集できます。
フィールドマッピングのマップレット マップレットをフィールドマッピングに追加できます。マップレットをフィールドマッピングに追加した後、ソースフィールドをマップレットの入力フィールドにマッピングし、マップレットの出力フィールドをターゲットフィールドにマップする必要があります。
ソースフィールドがターゲットフィールドに直接マッピングされる場合、マップレットの出力フィールドを同じターゲットフィールドにマップすると、データ統合 は、ソースの値とターゲットフィールド内の出力フィールドを連結します。式がターゲットフィールドに対して適正であることを確認します。
注: マップレットの出力フィールドの名前は、ソースフィールドの名前と一致しません。データ統合 では、ソースフィールド名の最後に数字を付けて、出力フィールド名を決定します。またデータ統合 では、出力フィールドの表示がソースフィールドと同じ順序にならないことがあります。
ルックアップ条件 ルックアップはルックアップ条件に基づいて値を返します。同期 タスクウィザードの[フィールドマッピング] ページで、ソース内の情報に基づいてルックアップ条件を作成できます。例えば、SALESソースデータベーステーブルの場合、カラムITEM_IDがITEMSフラットファイルのカラムITEM_IDと等しいと設定し、ルックアップで一致する項目IDごとに項目名を返すなどです。
ルックアップ条件を作成する場合は、以下のコンポーネントを定義します。
• ルックアップ接続とオブジェクト。ルックアップを実行するときに使用する接続とオブジェクト。可能であれば、ネイティブ接続を使用します。例えば、Oracleテーブルに対してルックアップを実行するには、ODBC接続ではなくOracle接続を使用します。• ソースとルックアップのフィールド。ルックアップ条件を定義するために使用するフィールド。同期 タスクは、ソースフィールドの値をルックアップフィールドと比較し、一致に応じて値を返します。1つのルックアップに複数の条件を定義できます。複数のルックアップ条件を定義する場合は、すべてのルックアップ条件が真である場合のみ一致が検出されます。例えば、ルックアップに次の条件を定義したとします。
SourceTable.Name = LookupTable.Name SourceTable.ID = LookupTable.ID
同期 タスクは、次のルックアップを実行します。
Lookup (SourceTable.Name = LookupTable.Name, SourceTable.ID = LookupTableID)
ルックアップの戻り値 ルックアップを設定する際には、ルックアップの戻り値を設定します。ルックアップの戻り値は、定義した戻り値のプロパティ(多重度やルックアップ式など)によって変わります。
ルックアップの戻り値とは、データ統合 がルックアップ条件に基づいて一致を検出したときに返す値のことです。ルックアップがエラーを返した場合、データ統合 はその行をエラー行ファイルに書き出します。
ルックアップの戻り値の一部としてルックアップ式を設定できます。それには、ルックアップの戻り値を表す$OutputField変数を使用した簡単な式を設定します。
例えば、以下の式は、各ルックアップの戻り値に100を加算します。
$OutputField+100
別の例として、連結演算子(||)を使用して、文字列のルックアップの戻り値に文字列を連結することもできます。例えば、次のようにします。
'Mighty' || '$OutputField'
ルックアップ式では、パラメータファイルに定義したパラメータを使用できます。
以下の表に、設定可能なルックアップの戻り値プロパティを示します。
ルックアップの戻り値プロパティ
説明
出力フィールド
使用するルックアップテーブルのフィールド。
多重度
データ統合 が複数の戻り値を処理する方法。
- 2つ以上の出力値がある場合はエラー。ルックアップ条件が複数の値を返したときに、同期 タスクがエラーを表示する必要がある場合に選択します。データ統合 は、複数の一致が見つかった場合に行を拒否し、エラー行ファイルに書き込みます。これがデフォルトです。- ランダムに1つの出力値を選択。ルックアップ条件が複数の値を返したときに、同期 タスクが最初の戻り値を選択する必要がある場合に選択します。ルックアップ値の戻り値の順序はシステムによって異なることがあります。式
$OutputFieldを使用して選択した出力フィールドを表す簡単な式。
デフォルトでは、データ統合 は、式「$OutputField」を使用したルックアップの戻り値をそのまま渡します。
ルックアップに関するルールおよびガイドライン ルックアップを作成するときは、次のルールおよびガイドラインに従います。
• ルックアップがフラットファイルにある場合、ファイルでは、カンマ区切り文字を使用する必要があります。他の種類の区切り文字は使用できません。• ルックアップを設定するときに、簡単なルックアップ式を、ルックアップの戻り値の一部として設定できます。式を表すときは、$OutputField変数を使用します。$OutputFieldを含まないルックアップ式を使用する場合は、ルックアップのアクションをネゲートします。• Windows 7(64ビット)でSecure Agentによって実行されるフラットファイルルックアップを含むタスクは、完了しない可能性があります。問題を解決するには、Secure Agentサービスに対してネットワークログインを設定します。• [フィールドマッピング] ページでは、ソースフィールドごとにルックアップの実行または式の作成を行うことができます。両方を実行することはできません。• 各タスクには、1つ以上のルックアップを含めることができます。パフォーマンスへの影響を回避するには、タスクに含めるルックアップを5つ以下にします。• ルックアップを実行するときに、タスクは外部結合を実行し、入力行をソートしません。ルックアップでは、大文字と小文字を区別しない文字列比較を実行して、一致する行を判断します。• ルックアップ条件のソースフィールドとルックアップフィールドには、互換性のあるデータ型を指定する必要があります。データ型に互換性がない場合は、次のエラーが表示されます。Source field [<source field name> (<source field data type>)] and lookup field [<lookup field name> (<lookup field data type>)] have incompatible data types.
ルックアップフィールドに複数のルックアップ条件を作成し、ルックアップソースがフラットファイルである場合は、すべてのソースフィールドに同じデータ型を設定する必要があります。同期 タスクは、ターゲットフィールドの精度およびスケールとして、ソースフィールドデータ型の、より高い精度およびスケールを使用します。ソースフィールドに同じデータ型が設定されない場合は、次のエラーが表示されます。
Lookup field <field name> in <file name> has conflict data types inferenced: <data type 1> and <data type 2>.
• ルックアップ条件に、特定のデータ型のルックアップフィールドを含めることはできません。フラットファイルのルックアップフィールドにTextまたはNtextデータ型があるか、ルックアップのターゲットフィールドにTextまたはNtextデータ型がある場合、タスクは失敗します。• ルックアップを含むタスクを実行し、そのルックアップのソースフィールド、ルックアップフィールド、または出力フィールドがルックアップオブジェクトに存在しない場合、エラーが表示されます。