データ処理関数MapForce® 2012 がサポートするカスタマイズ可能なデータ処理関数により、ソースとターゲットファイル間におけるパワフルで柔軟なデータの修正を行うことができます。 MapForce のデータ処理関数が収められたライブラリを使うことで、データマッピングプロジェクトに必要なフィルタリングやデータの修正を行うことができます。また、既存のデータ変換コードや XSLT 1.0 または 2.0 ファイルを関数ライブラリとしてインポートして使用することで、作業時間を短縮したり既に完成した過去の成果物を効率的に利用することができます。MapForce にはユニークな関数ビルダーも搭載されており、複数のオペレーションからなるカスタム関数の定義を行うこともできます。 カスタムデータ処理関数様々な場面に適用することのできるデータマッピング関数ライブラリにより、MapForce では非常に高度な変換を行うことができ、Boolean ロジックや、文字列処理、数学的な計算、SQL ならびに SQL/XML ステートメント、そしてユーザー定義関数などを使用することができます。それ以外にも、既存のウェブサービスを使用した検索やデータ処理などをマッピング内で行うこともできます。 以下のスクリーンショットでは、中央のボックスにより表されられるデータ処理関数によりマッピングが行われる前の要素に対してデータの操作が行われ、複数あるデータソースの内容が1つに結合されます。
上の例では、ソース XML スキーマ(ExpReport)の Person データ要素に First (名前)と Last (苗字)という子要素が含まれています。しかしターゲットとなる XML スキーマ(MarketingExpenses)には、対応する要素が1つしかありません:苗字と名前の両方を表す FullName です。データの連結を行う concat データ処理関数を使用するマッピングにより、2つの要素に記述されている内容を組み合わせ、ターゲットとなる1つの要素に渡すことができます。 変換のパラメーター化MapForce は変換入力パラメーターのサポートも行っており、外部パラメーターからの入力を受け取り、変換を行うマッピングに使用することができます。MapForce により生成された変換をデータ統合アプリケーションで使用したり、入力パラメーターに呼応してデータソースから抽出するようなフィルターを、マッピングプロジェクト内で定義する様な場面において極めて実用的な機能になります。変換入力パラメーターは MapForce により生成される Java、C#、または C++ の関数にも含めることができます。 この変換コードのパラメーター化により、マッピングプロジェクトの柔軟性を更に向上させ、非常に複雑で重要なアプリケーションに対しても MapForce を使用することができるようになります。 関数ライブラリMapForce には様々な場面で使える関数ライブラリが搭載されており、高度なデータ処理関数を構築し、ターゲットのコンテンツモデルに適応させるためにコンピューターが行うことができるデータ処理ならどのようなものでも実装することができます。全ての関数はデザインウィンドウのライブラリペインに階層ツリー構造で表示され、、展開や縮退することができます。 文字列の連結や、和算、乗算といった、様々な処理を行う内部関数に対して入力されるパラメーターの数に制限は無く、数学的な操作や複数のパラメーターをまとめるといった処理を簡単に行うことができます。count、sum、min、average、join-string といった集計関数によりデータグループ全体の計算を行い、マッピングターゲットに対して単一の値を与えるといったこともできます。 core ライブラリに収められている関数は一般化された関数で、特定の種類の出力を持ってはいません。これらの core 関数を使用して、XSLT 1.0/2.0、XQuery、Java、C++、または C# によるデータ変換コードを簡単に作成することができます。以下には core ライブラリに収められている関数が示されており、論理オペレーションや数学関数、そして文字列処理などが含まれています。
MapForce で使用することのできるパワフルな関数の例を以下に記します グループ化複数のソースデータをグループ化して、それらグループに対して処理命令を適用することができます。特にフラットデータを階層構造へ変換するような場面で使用されます。以下の例では、group-by 関数により(ここでは Excel 2003 で表示されている) CSV フラットファイルが XML に変換されています。
MapForce におけるこの例のマッピングを以下に示します :
グループ化により、どのような量のデータに対しても柔軟な操作や、データの再利用を行うことができます。 グループ化関数には以下のようなものがあります :
これらの関数は関数ライブラリ内に sequence functions としてまとめられています。 グループ化は XSLT 2.0、Java、C#、そして C++ で利用することができます。 数値、日付、そして時間のフォーマットMapForce は様々なフォーマット機能を搭載しており、数値、日付、そして時間を、対応する文字列形式に簡単に変換することができます。例えば、以下の単純な format-number 関数を使うことで、数値インプット(例: 12345)が、米ドルのプレフィックスが先頭あり、千の位のカンマと小数点が加えられた、通貨形式(例: $12,345.00)に変換されます。
数値、日付、時間の解析この機能は上記機能とは反対に、数値や日付、時間の書式を持つテキストデータを数値データとして変換します。例えば、以下の parse-number 関数を使用することで、31,234.50 という文字列を 31234.5 という数値に変換することができます。
Distinct-values 関数distinct-values 関数を使うことで、重複する値をマッピングの結果セットから自動的に削除することができます。この機能は MapForce 関数ライブラリの sequence functions に収められており、デザインペインにドラッグすることで、全てのマッピングに対して簡単に挿入することができます。 例えば、以下のスクリーンショットでは、出力ドキュメントにて各部門名が(Department の子要素の Name にて)一度だけ表示されます。
Position 関数MapForce ライブラリの position 関数を使えば、入力ドキュメント内でデータが存在する位置を出力として取り出すことができ、N 行目にあるデータや N 番目のノードだけを読み込み / 変換する、といった操作ができます。 以下の例では出力ドキュメントには入力ドキュメントにある最初の2人のデータだけが表示されます。
この機能は MapForce 関数ライブラリの node functions の中に収められており、デザインペインにドラッグすることで、全てのマッピングに対して簡単に挿入することができます。 トークン化関数MapForce では異なる方法でデータを分割する以下の関数がサポートされています
これらの関数は関数ライブラリ内に string functions としてまとめられています。 ノード名関数node-name 関数は選択されたノードの QName を戻します。この関数は関数ライブラリの function から利用可能です。
core ライブラリの下には、選択された出力言語で使用することのできるライブラリや関数だけが表示されます。言語の切替が行われ、マッピングで使われている関数が切り替え先の言語で使用できない場合、関連する警告が表示されます。 MapForce で使えるデータ処理関数の拡張範囲に制約はなく、独自の関数ライブラリを作成、XSLT ファイルをインポートして関数ライブラリとして使用したり、関数ライブラリとして既存のデータ変換コードを簡単に使用することができます。例えば、こちらからからダウンロードできる XSLT 標準ライブラリをお使いいただいたり、ウェブサービスに接続して、マッピングターゲットにデータを渡す前に、検索やデータの操作を行うことができます。 更に、MapForce に搭載されている関数ビルダーを使うことで、複雑な関数の作成や保存を行うことができます。 関数ライブラリから MapForce デザインウィンドウへドラッグアンドドロップすることで、目的の関数を使用することができます。ソースデータモデルにある要素をデータ処理関数の入力へ接続し、データ処理関数の出力をターゲットデータモデルへ接続します。 MapForce では高度な多段データ処理ロジックががサポートされており、1つの関数の出力を別の関数の入力として使用することで、データ変換を行う前に必要となる複雑な処理を行うことができます。このような複雑な関数セットは、保存して、関数ビルダーから再利用することができます。 フィルターと条件MapForce のツールバーからフィルターと条件を使用することができます。これらのデータ処理関数をマッピングに加えることで、Boolean 条件などをベースにソースデータの選択を行うことができます。
MapForce の IF-ELSE 条件で使用される変数の数に制限はありません。プログラミング言語でステートメントの切り替えと同様の効果を得ることができるこの機能により、値のマッチングを行うことで、マッピングプロジェクトにおけるデータの流れを簡単にコントロールすることができます。 例えば以下のスクリーンショットでは、IF-ELSE コンポーネントを他のコンポーネントと組み合わせることで、以下のような温度データの分析を行います:
データベースをマッピングのソースとして使用している場合、SQL の SELECT や WHERE ステートメントを使用することができ、これらのオペレーションをベースにしたマッピングコンポーネントを追加することができます。 データ処理関数によっては定数を指定する必要があります。例えば、2つの要素のデータを連結する時に、両者の間に空白を挿入しなければならないかも知れません。マッピングに定数を追加するには、ツールバーにある「定数の挿入」ボタンをクリックしてください。 マッピングの出力が無かったり NULL の場合に備えて、MapForce では特定の要素に対してデフォルト値を設定することができます。この機能によりマッピングプロジェクトに強制的な IF-THEN データ処理ルールが導入され、出力データがターゲットモデルに準拠することを保証することができます。 入力フィルドにある値のセットを異なる値に変換する必要も生じます。例えば、暦の月表示がソース内では数値で行われているが、ターゲット内では英語名(または和名)で行う必要がある様な場合、Value-Map 関数を設定することで、(1を Jan、2を Feb というように)数値を対応する単語に変更することができます。データマッピングにある Value-Map をダブルクリックすることで、入力と結果値が記されたテーブルを作成することができます。
Value-Map 関数は様々な場面で使用することができます。例えば、ソースデータが「注文完了」の場合、「請求書の発送」に結果フィールドを書き換える、といったことができます。この関数により、XML、データベース、フラットファイル、EDI、Excel 2007+、XBRL、そしてウェブサービスデータの正確なマッピングを簡単に定義することができるようになります。 中間変数中間変数は特殊な種類のコンポーネントで、マッピングの中間結果を保管して更なる処理に使用したり、高度なマッピング問題を解決するために使用することができます。中間変数は通常の(非インライン)ユーザー定義関数と等価で、インスタンスファイルを持たない構造コンポーネントです。 中間変数は、マッピングにおいて点線の境界線により示されます。変数の compute-when 入力アイテムにより、スコープの制御を行うことができます。つまり、compute-when を使用することで、マッピングが実行された際に、いつ、どれほどの頻度で変数の値が計算されるのかを指定することができます。大体の場合、この入力を接続する必要はありませんが、デフォルトのコンテキストをオーバーライドするため、またはマッピングのパフォーマンスを向上させるために、必要になる場合もあります。
新たな変数は挿入メニューまたはコンポーネントの挿入ツールバーにある変数アイコンにてマッピングに挿入することができます。どちらの場合でも、変数の作成ダイアログが表示されます。変数では、文字列や、数値、boolean、decimal、dateTime といったデータ型を扱うことができます。
その他にも、XML スキーマやデータベース、EDI、FlexText 構造をベースにした複雑な変数を扱うこともできます。
コーディングを経験したことのある MapForce ユーザーであれば、部分的な結果や、未知のコンテンツを変数として保管した後、変数の操作を行うという経験をしたことがあるでしょう。この手法を MapForce データマッピングプロジェクトに適用することで、マッピングのスピード向上や簡便化を図ることができるとともに、部分的なマッピングを新たな要件に合わせて再利用することも可能になります。 現在のデータ統合プロジェクトのためのカスタムデータ処理関数がいかに簡単に作成できるか体験してみてください。 30日無料トライアル版 MapForce をダウンロード。 |
| ||||||||||||
| 会社情報 | 企業法務 | プレス | パートナー | 求人情報 | サイトマップ | お問い合わせ | Altova Blog | Mobile | Full Site | |||
|
