データのジョイン

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  マッピングのデザイン >

データのジョイン

(例えば、最初の 構造内の フィールド A  が 2 番目の構造内のフィールド Bと同じ値を持つなど)の条件をベースに2つの構造からのデータを結合する必要がある場合があります。このようなマッピングの条件には、ジョインコンポーネントを使用することができます。

 

ジョインコンポーネントは、カスタムに定義付けられた条件をベースにして2つの構造をジョインすることを有効化する MapForce コンポーネントです。 条件を満たすアイテムのアソシエーション (ジョインされたセット) を返します。ジョインは、(ID などの)共通のフィールドを共有する2つの構造からのデータを結合する際にとても役に立ちます。

 

例えば、下のマッピングでは、 中間コンポーネントは 「ジョイン」 コンポーネントです。 このマッピングでは、 2つの XML 構造 (個人のリスト と 住所のリスト) がジョインされます。このサンプルの目的は、各個人の情報をターゲット XML ファイルに書き込むことです。 FirstNameLastName フィールドは、ジョインするキーとしての役割を果たします。 すなわち、 (Person の下の) FirstNameLastName の値が( Address の下の) FirstNameLastName と同じ値の場合、同じ個人に属する住所の詳細は「ジョイン」されます。ジョインした構造からのアイテムは、 次のターゲット(この場合、  XML ファイル)にマップすることができます。ジョインの条件は、ジョインコンポーネント プロパティ内で 「ジョインの条件の定義」 ( mf_ic_join_key ) ボタンをクリックして定義されます。このサンプルにはマッピングのサンプルが存在し、サンプル:  XML 構造のジョイン内で詳しく説明されています。

mf_map_JoinPeopleInfo

JoinPeopleInfo.mfd

上記のとおり、ソース 構造 と ジョインコンポーネントは、マッピングを優先順位の低い「全てコピー」 接続を使用して接続されています。一般的には、コンテキストが関連する場合、このような接続は自動的に MapForce により作成されます (詳細に関しては、次を参照してください: 全てコピー接続)。

 

(上のマッピングのような)個別のコンポーネント、または、同じコンポーネントに属するコンポーネントから2つの構造をジョインすることができます。(例えば、 XML 構造とデータベーステーブルなどの)異なる型 の構造をジョインすることもできます。データベースに関連したジョインの詳細に関しては、次を参照してください: データベースのデータのジョイン (SQL JOIN)

 

 

ジョインコンポーネントを追加する方法:

1.マッピング 変換言語を BUILT-IN に設定します(これを行うには ic-builtin ツールバーボタンをクリックします、または、 「出力 | Built-In 実行エンジン」 メニューコマンドを使用します)。
2.「挿入」 メニューから 「ジョイン」 をクリックします。または、 「ジョイン」 ( mf_ic_join_button ) ツールバーボタンをクリックします。ジョインコンポーネントがマッピングに表示されます。デフォルトでは2つの構造からデータを受け入れるため、2つの nodes/rows 入力が存在します。必要であれば、「入力の追加」( gui_add_function_parameter ) ボタンをクリックして、ジョインに新しい入力を追加することができます。以下を参照してください 3つ以上の構造をジョインする

mf_join

3.ジョインコンポーネントの nodes/rows アイテムとジョインされる構造を選択します。
4.ジョイン (または 複数の条件)のための条件を追加してください。 これを行うには、 ジョインコンポーネントを右クリックし、プロパティ を選択します。ジョインの条件は、関数のブール値の結果をジョインコンポーネントの condition アイテムに接続することにより、マッピングから直接追加することができます。データベースがジョインされる特定の場合、ジョインの条件は自動的に MapForce  により作成されます。詳細に関しては、次を参照してください: ジョインの条件の追加

 

 

メモ:

 

ジョインコンポーネントは、 BUILT-IN 実行エンジン内でのみサポートされています。C#、 C++、または Java 内でのコードの生成はサポートされていません。
構造がサポートされていない、または、ジョインのための入力ソースによりサポートされて以内場合、  MapForce マッピング上直接ヒントを表示するか、または、マッピングを検証する際に、メッセージウィンドウ内にヒントを表示します。マッピング (次を参照してください: マッピングの検証)。
ジョインコンポーネントをインラインユーザー定義関数の結果または入力パラメーターに接続しないでください。このような接続が存在すると、マッピングの検証中に検証エラーが発生します。
使用することのできるデータベースコンポーネント (テーブルまたはビューなどの) を直接ジョインコンポーネントに接続すると、 SQL モード ( mf_ic_join_sql_enabled ) ボタン がジョインコンポーネントの右上に自動的に表示されます。有効化されると、このボタンは、ジョイン操作に適用することのできる特別な SQL 機能を提供します (次を参照してください: SQL モード内のジョインについて)。
3つ以上の構造をジョインする必要がある場合、複数のジョインコンポーネントを追加して、「重ねて」表示します (すなわち、ジョインコンポーネントの出力を他のジョインコンポーネントの入力として与えます)。ジョインされたシーケンス全部を他のジョインの入力としては使用できないことに注意してください。 ジョインされた アイテムの出力を他のジョインコンポーネントに接続しようと試みると、エラーメッセージが表示されます。しかしながら、ジョインの結果の一部を他のジョインに接続することは可能です。
SQL モードでは、ジョインを重ねて表示することはサポートされていません。 しかしながら、 ジョインされた子孫 (子) テーブルを他のジョインに接続することは可能です。代わりに、SQL SELECT ステートメントを使用することができます (次を参照: 仮想テーブルとしての SQL SELECT ステートメント)。親と子テーブルに関する詳細は、次を参照してください: データベースリレーションシップの扱い方

 

他のコンポーネント型と比較したジョインコンポーネント

一部の場合、同じ結果を得るために、ジョインコンポーネントの代わりに複合型変数、または、フィルターを使用することができます。次を参照してください: 変数の使用フィルターと条件)。 しかしながら、他のコンポーネント型とは異なり、ジョインコンポーネントは、同じコンテキストに与えられるデータを確認することができるため、マッピングのロジックをわかり易くします。また、 SQL モード がジョインコンポーネント上で有効化されている場合、 マッピングのパフォーマンスが大幅に向上します (これはデータベースジョインにも適用されます、次を参照してください: データベーステーブルのジョイン)。

 

親コンテキストの追加

特別な場合は、特定のマッピングの結果を達成するために、ジョインコンポーネントに接続されているデータのために(いわゆる「親コンテキスト」と呼ばれる)マッピングのコンテキストを明示的に提供することができます。親コンテキストを追加するには、ジョインコンポーネントのジョインされたアイテムをクリックし、コンテキストメニューから「親コンテキストの追加」を選択します。ジョインコンポーネントは、必要とするソースアイテムに接続することのできる追加 parent-context 入力を含む外観に変更します。詳細に関しては、以下を参照してください マッピングコンテキストのオーバーライド


(C) 2019 Altova GmbH