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

Altova MapForce 2020 Enterprise Edition

このサンプルは、 CSV ファイルからデータを読み取り他の CSV ファイルにデータを書き込む MapForce マッピングの作成方法を説明しています。 カスタムの値 ("n/a") を持つソース CSV ファイルからすべての空のフィールドを置き換えることがこのサンプルの目的です。ソース CSV ファイルは以下のようになると仮定します:

 

H,111,332.1,22537.7,,Container ship,,,

D,111,A-1579-227,10,3,400,Microtome,,

D,111,B-152-427,7,6,1200,Miscellaneous,,

H,222,978.4,7563.1,,Air freight,,,

D,222,ZZ-AW56-1,10,5,10000,Gas Chromatograph,,

 

希望するマッピングの出力は以下のようになります:

 

H,111,332.1,22537.7,n/a,Container ship,n/a,n/a,n/a

D,111,A-1579-227,10,3,400,Microtome,n/a,n/a

D,111,B-152-427,7,6,1200,Miscellaneous,n/a,n/a

H,222,978.4,7563.1,n/a,Air freight,n/a,n/a,n/a

D,222,ZZ-AW56-1,10,5,10000,Gas Chromatograph,n/a,n/a

 

次のパスでこのサンプル内で作成されたマッピングを見つけることができます: <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\ReplaceEmptyFields.mfd。マッピングのためのソース CSV ファイルは、 Orders.csv と呼ばれ、同じファイル内にあります。ターゲット CSV ファイルは MapForce により生成されます。

 

マッピングの目的を達成するために、存在するそれぞれの空の値を "n/a" と置き換える単一のノード関数を作成します。下に示されるように、この関数は1度のみ定義されますが複数の子孫 CSV フィールドに適用されます。

 

ステップ 1: ソース CSV ファイルをマッピングへ追加する

ソース CSV ファイルをマッピングに以下のように追加することができます:

 

1.「挿入」 メニューから、「テキストファイル」 をクリックします。

2.(MapForce Enterprise Edition のみ) オプション 「標準 CSV(カンマ区切り)または FLF(固定長)のファイルに単純な処理を使用 フィールド」を選択して、「継続」をクリックします。

3.「入力 ファイル」 をクリックして、次の ファイルを選択します: <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\Orders.csv

 

チェックボックス 「空のフィールドを存在しないものとして扱う」 が選択されている場合、クリアしてください。チェックされている場合、このチェックボックスは、空の値を抑圧し、ノード関数が作動しません。 詳細に関しては、次を参照してください: CSV オプションの設定.

 

4.「OK」をクリックします。

5."Orders" に対するコンポーネントを変更するようにプロンプトされると、希望するオプションをクリックします (例えば、 コンポーネント名を変更しない)。

 

MapForce の CSV コンポーネント詳細に関しては次を参照してください: CSV とテキストファイル.

 

ステップ 2: ターゲット CSV ファイルをマッピングへ追加する

ターゲット CSV ファイルをマッピングに以下のように追加することができます:

 

1.「入力」 メニューから、「テキストファイル」をクリックします。

2.(MapForce Enterprise Edition のみ) オプション 「標準 CSV(カンマ区切り)または FLF(固定長)のファイルに単純な処理を使用 フィールド」を選択して、「継続」をクリックします。

3.ターゲット ファイルはソースと同じ数のフィールドを有する必要があります。このため、9つのフィールドを追加するために 「フィールドの追加」 ボタンを複数回クリックしてください。

4.「OK」をクリックします。

 

ステップ 3: マッピング 接続の描写

この時点では、 マッピングには次の2つのコンポーネントが含まれています: ソース CSV ファイルと ターゲット。 ソースコンポーネント上の Rows アイテムの横の出力コネクタ mf_ic_output_connectorクリックし、ターゲットコンポーネント上の Rows アイテムの入力コネクタ mf_ic_output_connectorにドラッグします。これを行うと、設定に応じて MapForce は自動的に全ての子孫アイテムを接続し、いわゆる、"全てコピー" 接続を作成する可能性があります。一致する子要素を自動接続する ic-conn-child ツールバーオプションが有効化されている場合のみ上記が行われます。前記のとおり、ノード関数は"全てコピー" 接続の子孫に適用されません。このため、"全てコピー" 接続は最初に通常の接続に変更される必要があります。これを行うには、ソースの Field1 から、ターゲットの Field1 に接続します。プロンプトされると、接続の置換をクリックし、全てコピー接続を解決するをクリックします。

 

一致する子要素を自動接続する ic-conn-child オプションが有効化されていない場合、ソースとターゲット出力間の接続を以下のように作成します:

 

1.ソース内の Rows アイテムをターゲット内の Rows アイテムと接続します。

2.接続を右クリックし、 一致する子要素を接続する をコンテキストメニューから選択します。

3.全てコピー接続を作成する チェックボックスをクリアします。

4.「OK」 をクリックします。

 

マッピングは、以下のようになります:

mff_nodefunc_ex1

 

ステップ 4: ノード関数の作成

データがソースを離れてすぐに、またはターゲットに書き込まれる前に、ノード関数を作成することができます。このサンプルの目的のため、ターゲットコンポーネントの入力側でノード関数を作成します。これは、基本的には、「ターゲットにデータが書き込まれる前」を意味します。詳細に関しては、次を参照してください: 入力と出力サイドの選択.

 

ターゲットコンポーネント上のRows アイテムを右クリックし、 「デフォルトとノード関数 | 入力デフォルトとノード関数」 をコンテキストメニューから選択します。「マッピング」ペインの上に空のグリッドが表示されます。

mff_nodefunc_ex2

次に、グリッドの左の 関数を追加 mf_ic_add_nodefunc ボタンをクリックします。マッピングは関数の 入力 ("raw_value") 出力 ("result") を表示します。

mff_nodefunc_ex3

前記のとおり、 関数の目的は、空の値を文字列 "n/a" に置き換えることです。これを達成するために、マッピングに追加コンポーネントを追加します:

 

MapForce ビルトイン関数 empty。 引数として提供された値が空の場合、この関数は true を返します。それ以外の場合は false を返します。ライブラリウィンドウから関数をマッピングにドラッグ、またはマッピングをダブルクリックして、 "empty" を入力します。 次も参照してください: マッピングにビルトイン関数を追加する

テキストの値 "n/a"。値を追加するには、マッピング上の空のエリアをダブルクリックし、2重引用符に囲まれた "n/a" を入力します。次も参照してください: マッピングに定数を追加する

If-Else 条件。マッピングに追加するには、 If-Else 条件 ( mff_ic_if_else ) ツールバーボタンをクリックします。このようなコンポーネントの詳細に関しては、次を参照してください: 例: 条件付で値を返す

 

これらのコンポーネントを使用して、関数をデザインをします:

mff_nodefunc_ex4

上記のデザインは、以下の用に作動します: 最初に、外側のマッピングからの入力値は、 raw_value 入力を使用して関数を入力します。行の値は、 empty 関数に入力として提供されます。If-Else コンポーネントempty 関数により返されたブール関数の結果を評価します (true または false) 。結果が true の場合、定数 "n/a" は関数の結果になります。結果が false の場合、関数の行入力の値は、関数の結果になります。関数の result ("n/a" または raw_value) が外側のマッピングから返されます。

 

mf_ic_exit_door Exit をクリックして(または、Escape を押し) 関数の編集のエリアを終了します。

mff_nodefunc_ex5

上記のマッピング内で、 以下の点に注意してください:

 

ウィンドウの上の部分のテキストは関数が定義された箇所を示します。これは同じコンポーネントのために複数のノード関数が定義されている状況では特に役にたちます。

グリッド内の適用 オプションは 全ての子孫 アイテム に設定されています。このサンプルでは、これは期待される振る舞いです。 すなわち、 Rows の全ての子孫アイテムが条件を満たす場合影響を受けます。関数は親アイテムに1度のみ定義されていますが、マッピング上で確認できるように、ターゲットコンポーネントの左側 (入力) は複数の mf_ic_node_func_applied アイコンを表示します。

データ型 オプションは "string"に設定されています。このサンプルでは、 テキストデータを作業しているため、これは期待される振る舞いでありまた、デフォルトの振る舞いでもあります。

編集 ボタンにより、必要に応じて関数の定義に戻り変更することもできます。このボタンが表示されていない場合、 mf_ic_node_func_defined アイコンを最初にクリックしてください。

 

ステップ 5: マッピングの実行

MapForce 内でマッピングの結果をプレビューするには、出力 タブをクリックします。検証エラーが発生すると、メッセージ ウィンドウ内に表示されます。成功すると CSV 結果が出力ペイン内に表示されます。次を参照してください: マッピングの検証

 

MapForce Server Advanced Edition を使用して、次の方法でサーバーマシン上でこのようなマッピングを実行することもできます:

 

MapForce Server Advanced Edition スタンドアロンを使用する場合、マッピングを実行可能ファイルにコンパイルして、ターゲットマシンにコピーしてください。 次を参照してください: MapForce Server 実行可能ファイルにマッピングをコンパイルする.

FlowForce Server と MapForce Server Advanced Edition にライセンスが供与されている場合、FlowForce Server に直接マッピングをデプロイし、予定通り、またはオンデマンドとしてジョブが作動するように構成します。次を参照してください: マッピングを FlowForce Server にデプロイする

(C) 2019 Altova GmbH