データマッピングのパターンを適用する

Altova MapForceには、様々な設計パターンに対応した、強力なマッピング機能が搭載されています データ変換 要件を分析し、データマッピングの課題を事前に把握し、いくつかの基本的な指針に従うことで、以下のようなことが明らかになることがあります データマッピング データマッピングのデザインを簡素化し、最適な解決策につながるようなパターンが用意されています。MapForce Examplesプロジェクトでは、一般的なデータマッピングのパターンを解説するサンプルファイルとデータセットを提供しています。これらの例を参考にし、MapForceに組み込まれた実行エンジンで実際に試してみることは、ご自身のプロジェクトに最適なパターンを選択する上で有効な方法です。

厳密な一致 vs. 条件付き一致

まず、入力と出力が厳密に一対一の関係にあるのか、それとも、範囲指定や条件分岐のような、より複雑な条件を考慮する必要があるのかを判断してください。

「完全一致」機能を使用すると、シンプルな二列の表を使って要件を表現できます。アルゴリズムは「左側の列で指定された入力値と完全に一致するものを探し、その行の右側の列にある値を適用する」というものです。ただし、左側の列にある項目はすべて一意である必要があります。一方、右側の列には重複する値が含まれる場合があります。

正確な一致の例としては、月名を数字に変換したり、ISBNコードを書籍のタイトルに変換したりすることが挙げられます。

厳密な一致オプション

テーブル内のデータ数が一定で、比較的少ない場合(例えば、20件程度、または例外的な場合に200件程度まで)は、値マッピングコンポーネントを使用します。一般的な例としては、月名を数字に変換したり、コードを別のコードに変換したりすること(例えば、「F」を「XX」に、「M」を「XY」に変換するなど)が挙げられます。

value-mapコンポーネントの入力と出力の列名を、さらに変更することも可能です。value-mapのプロパティダイアログで、"input"または"result"という名前をダブルクリックするか(またはペンアイコンをクリックするか)、入力を開始すると、名前を変更できます。これにより、マッピング内で複数のvalue-mapコンポーネントの目的を容易に識別できます。

"MapArticle.mfd"というサンプルファイルは、value-mapコンポーネントの使用方法を示しています。

時々、「未知の入力値を変更せずにそのまま出力するための設定がないのはなぜか」という質問を受けます。その理由は、入力側と出力側のデータ型が異なる場合、そのような機能は動作しないからです。例えば、上記の例のように、整数を文字列に変換する場合などが該当します。

この場合の解決策は、"Otherwise" のチェックボックスをオフにする(これにより、不明な入力に対する値マッピングは空のシーケンスを返します)こと、そして、出力側でコア関数ライブラリにある "substitute-missing" 関数を使用して、空のシーケンスを元の入力値で置き換えることです。

より大きな参照テーブル

大量のデータや、頻繁に内容が変更される参照テーブルの場合、データベース参照が最適な解決策です。これは、参照テーブルの実際の値がマッピングの一部ではなく、データベースに格納されることを意味します。このパターンを実装するには、マッピングにデータベースコンポーネントとSQL-WHEREコンポーネントを追加してください。DB_PhoneList.mfdの例が、この戦略を示しています。

データベースを使用できない場合や、データ件数がそれほど多くない場合は、XMLやCSVなどの他の形式を使用することも可能です。また、例として示されているCompletePO.mfdファイルのように、フィルタリングを行うコンポーネントを組み合わせることもできます。ただし、この方法では、データベースとWHERE句を使用する場合と比較して、実行時に処理速度が遅くなる可能性があります。

特定の要件においては、値を検索するためにWebサービスを呼び出すことも可能です。例えば、"BookISBNConvertWS.mfd"や"CurrencyConverter.mfd"といったサンプルファイルは、Webサービスを利用して値を検索する際の具体的な使用例を示しています。

条件付き照合

もし、入力値の範囲指定など、単純な一致以上の複雑な条件が必要な場合は、例として示されている "ClassifyTemperatures.mfd" のように、if-elseコンポーネントを使用してください。

if-elseコンポーネント内の赤いプラス記号は、それぞれ異なる論理関数に基づいて追加の条件を追加できる機能です。また、「otherwise」という入力項目を使用することで、どの論理条件も真にならない場合に返す値を定義できます。

複雑なマッピングとコンポーネントの再利用

データ変換の要件が複数の入力と出力を含む場合、複数の値マッピングや条件分岐コンポーネントを、一つのマッピング内で簡単に組み込むことができます。

上記の各コンポーネントは、コピー&ペースト機能を使って、同じデザイン内、または複数のマッピングファイル間で複製することができます。また、ここで説明されている機能を、ユーザー定義関数でラップすることで、再利用することも可能です。作成した関数は、ユーザー関数ライブラリに保存し、後で他のプロジェクトで利用したり、同僚と共有したりすることができます。

ご自身のデータ変換プロジェクトで、MapForceのデータマッピング機能を実際に試してみて、その使いやすさを実感してください! 30日間の無料トライアルをダウンロードしてください MapForceに関する情報です。