このサイトをビューするために JavaScript を有効化してください。

Altova MapForce 2020 Enterprise Edition

このサンプルは、 MapForce ジョイン コンポーネントを使用した、 データベーステーブルからのデータをジョインする方法について説明しています。ジョインの操作は、 SQL モード内のジョインについてで説明されているように、SQL モード内で実行されます。3つ、または以上のテーブルワークを同様にジョインする場合も同様に行います。以下も参照してください: 3つ以上の構造をジョインする

 

このサンプルは、次のパスにあるマッピングサンプルが存在します: <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\JoinDatabaseTables.mfd

mf_map_JoinDatabaseTables

JoinDatabaseTables.mfd

上のマッピングの目的は、 2つの ソース データベーステーブルからのデータを単一のターゲット CSV ファイルに結合することです。 下のデータベースダイアグラムに示されているとおり、 最初の テーブル (users) は個人の住所を保管し、  2 番目の テーブル (addresses) は個人の名前と電子メールアドレスを保管します。2つのテーブルは、共有のフィールドによりリンクされています ( users 内の id addresses 内の user_id に対応しています)。 データベース用語では、この種類おリレーションは「外部キーリレーションシップ」と呼ばれています。

mff_jointables

 

簡素化のために、 下のイメージは両方のテーブルの実際のデータを表示しています。

mff_jointables_data

 

users テーブル内の各ユーザーはゼロの値、または addresses テーブル内に複数の住所を有することができます。例えば、ユーザーは、 「home」の種類に属する1つの住所、または 2つの住所 (「home」と 「work」の2種類の住所 )、または住所なしを選ぶことができます。

 

マッピングの目的は住所テーブル内に住所が少なくとも1つ記入されている全てのユーザーのデータ (名、姓、電子メール、住所など) を抽出することです。 また、特定の種類の住所を簡単に抽出することもできます (例えば、自宅の住所、または勤務先の住所のみを抽出することができます)。 (「home」 、または 「work」) などの抽出する住所は、マッピングにパラメーターとして与えられます。抽出された個人のレコードは姓によりアルファベット順に並べ替えられます。

 

下で説明されているとおり、ジョインコンポーネントを使用して、マッピングの必要条件が満たされます。

 

メモ:ジョインコンポーネントの使用のみがデータベーステーブル、またはビューをジョインする唯一の方法ではありません。 データベースへのジョインの適用は SQL SELECT ステートメントを使用して行われます データベースデータの選択 (SQL SELECT) を参照してください。SQL SELECT ステートメントのジョインコンポーネント主要な違いは、 前者は手動で作成され、そのために柔軟性があります。しかしながら、 SQL ステートメントを手動で作成を希望しない場合、 ジョインコンポーネントは簡単な代替方法です。

 

 

ステップ 1: ソースデータベースを追加する

1.「挿入」 メニューから 「データベース」 を選択します。(または、データベースの挿入 mf_ic_insert_db ツールバーボタン) をクリックします。

2.「SQLite」 をデータベースの型として選択し、「次へ」をクリックします。

3.<マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\ フォルダー内にある Nanonull.sqlite ファイルを参照します。

4.プロンプトされると、 addressesusers テーブルを選択します。

mf_map_JoinDatabaseTables1

 

 

ステップ 2: ジョインコンポーネントを追加する

1.「挿入」 メニューから 「ジョイン」 (または、「ジョイン」 mf_ic_join_button ツールバーボタン) をクリックします。

2.users テーブルから、ジョインコンポーネントの入力に接続を描きます。

3.users テーブルを展開し、addresses テーブル (users の子) からジョインコンポーネントの2番目の入力に接続を描きます。gui_add_function_parameter ボタンにより必要に応じて更にテーブルを追加することができます。しかしながら、このサンプルでは、2つのテーブルのみがジョインされます。

mf_map_JoinDatabaseTables2

メモ:addresses テーブル (users の子ではない) から直接接続を追加することができます。しかしながら、この場合、ジョイン条件の追加で説明されているとおり、ジョインの条件は手動で定義されなければなりません。このサンプルの目的のために、上に示されるように接続を作成してください。これにより、必要なジョインの条件が自動的に作成されます。

 

4.ジョインコンポーネント上で使用することのできる 「ジョインの条件の定義」 mf_ic_join_key ボタンをクリックします。ジョインの条件が自動的に作成される事に注意してください。 (users.id = addresses.user_id)。

mf_map_JoinDatabaseTables3

 

ステップ 3: ターゲット CSV コンポーネントの追加

 

1.「挿入」 メニューから 「テキストファイル」 (または、 テキストファイルの挿入 ic-component_txt ツールバーボタン) をクリックします。

2.テキストの処理モードを選択されるように問われると、標準 CSVのために簡単処理を使用する...  を選択します。

3.「フィールドの追加」 を数回クリックして、7つの CSV フィールドを作成します。他の設定を保持します。

mf_map_JoinDatabaseTables4

4.各フィールドのタイトルのセルをダブルクリックして、詳細を説明する名前を与えます (これによりマッピングを簡単に読み込むことができます)。

mf_map_JoinDatabaseTables5

5.ジョインコンポーネント と CSV コンポーネント間の接続を下に示されるように描きます。ジョインコンポーネントの joined アイテムとターゲットコンポーネントの Rows アイテム間の接続は、ジョインの条件を満たすために、 ターゲット内に無制限の数量の (行) を作成することを意味します。

mf_map_JoinDatabaseTables6

 

 

ステップ 4: SQL WHERE/ORDER 条件と入力パラメーターを入力する

1.ジョインコンポーネントの joined アイテムとターゲットコンポーネントの Rows アイテム間の接続を右クリックし、「SQL-WHERE/ORDER を挿入する」 を選択します。

2.WHERE と ORDER BY 句 を下に示されるように入力します。

mf_map_JoinDatabaseTables7

3.マッピング上で、 ( 挿入 | 入力の挿入 メニューコマンドを使用して) 入力コンポーネントを追加し、前のステップで作成された address_type パラメーター に出力を接続します。

mf_map_JoinDatabaseTables8

4.入力コンポーネントをダブルクリックして、下に示されるように構成します。 MapForce 内でマッピング出力をプレビューするためにデザイン-時刻 値(この場合、 「home」)が必要とされます。職場の住所を抽出するためにプレビューを行うには、この値を 「work」 と置き換えてください。

mf_map_JoinDatabaseTables9

 

 

マッピングの説明

ステップ 2 は定義されているジョインの条件 users.id = addresses.user_id を満たすレコードのみがターゲットにコピーされることを確認します。2つのテーブルは外部キーリレーションシップによりバインドされており、マッピング接続は状況に応じて描かれますジョインの条件は自動的に追加されています。 (テーブルリレーションシップに関する詳細は、以下を参照してください: データベースリレーションの扱い)。このサンプルには適用することができませんが、手動でジョインの条件を定義することもできます、次を参照してください: サンプル: 複数のテーブルから CSV レポートを作成する

 

2つのソーステーブルは、同じデータベースおよび同じコンポーネントからであり、このジョインは SQL ( mf_ic_join_sql_enabled ) モード を活用することができます。SQL モードが有効化されているため、ジョインの操作は MapForce*ではなく、データベースにより行われます。SELECT ステートメントが代わりに作成され、データベースに送信されます。

 

ステップ 4 で追加された SQL WHERE/ORDER コンポーネントにより、レコードセットを (自宅、または勤務先の住所を抽出するなど) フィルターし並べ替えることができます。WHERE 句は、 型 string のパラメーター :address_type を作成することに注意してください。パラメーターを使用することにより、マッピングから住所の種類 (自宅、または勤務先) を与えることができます。SQL WHERE/ORDER の詳細に関しては、次を参照してください: データベースデータのフィルターと並べ替え (SQL WHERE/ORDER)

 

最後に、入力コンポーネントによりマッピングの実行中に実際のパラメーター値を提供することができるようになります。MapForce 外でマッピングが実行される場合、(例えば、異なるマシン上で MapForce Server によりマッピングが実行される場合)  上記のデザイン-時刻が無視されるように、コマンドライン パラメーターとしてマッピングのランタイムに入力が与えられる必要があります。詳細に関しては、次を参照してください: パラメーターをマッピングに提供する

(C) 2019 Altova GmbH