データをフィルターする場合、または値を条件に対して取得する場合、以下のうち1つのコンポーネント型を使用することができます:
•フィルター: Nodes/Rows ( )
•SQL WHERE/ORDER ( )
•If-Else 条件 ( )
「挿入」 メニューから、または 「コンポーネントの挿入」 ツールバーからこれらのコンポーネントをマッピングに追加することができます。上記のそれぞれのコンポーネントには特定の振る舞いと必要条件があることに注意してください。差異は下のセクションで説明されています。
ノードと行をフィルターする
XML ノード または CSV 行を含むデータをフィルターする場合、 Nodes/Rows をフィルター コンポーネントを使用します。この Nodes/Rows をフィルター コンポーネントにより、 true または false 条件をベースにし、大きなデータセットからノードのサブセットを抽出することができます。マッピングエリアでのこの構造は以下のように表されます:
上の構造では、に接続されている条件は、 bool に接続された node/row が、 on-true または on-false 出力に接続されているかを決定します。具体的には、条件が true の場合、node/row は、 on-true 出力にリダイレクトされます。一方、 条件が false の場合、 node/row は、 on-false 出力にリダイレクトされます。
マッピングがフィルターの条件を満たすアイテムのみを消費する必要がある場合、on-false 出力を未接続のままにできます。フィルターの条件を満たさないアイテムを処理する必要がある場合、このようなアイテムがリダイレクトされる、 on-false 出力をターゲットに接続します。フィルターの条件が満たされ例外を追加する場合は、on-false 出力への接続は必須です (以下を参照してください: 例外の追加)。
手順を追ってのマッピングのサンプルは、 サンプル: ノードのフィルターを参照してください。.
データベースのデータをフィルター
Nodes/Rows をフィルター コンポーネントは、 MapForce により、他の コンポーネント 構造からデータをフィルターすることがでます。しかしながら、データベースからデータをフィルターする場合、SQL WHERE/ORDER コンポーネントを代わりに、使用することが奨励されます。SQL WHERE/ORDER コンポーネントは、データベースと作業し、 Nodes/Rows をフィルター コンポーネントよりも良いパフォーマンスを与えるために最適化されています。
このようなコンポーネントに関する詳細に関しては、SQL WHERE / ORDER コンポーネントを参照してください。
値を条件付きで返す
(ノードまたは行ではない) 単一の値を条件付きで取得する必要がある場合、 If-Else 条件 を使用します。If-Else 条件は、ノードまたは行をフィルターするには、適していません。 Nodes/Rows をフィルター コンポーネントとは異なり、If-Else 条件 は、(文字列または整数などの)単純型を返します。ですから、 If-Else 条件 は、単純型を条件付きで処理するシナリオのみに適しています。例えば、 各月の平均気温のリストがあると仮定します:
<Temperatures> |
If-Else 条件 により、リスト内の各アイテムのために気温が摂氏20度を超える場合は、値 "高" を、気温が摂氏5度以下の場合は、 値 "低" を返すように設定することができます。
マッピング上で If-Else 条件 の構造は、以下のようになります:
bool に接続された条件が true の場合、 value-true に接続された result としての出力になり、条件が false の場合、value-false に接続された result としての出力になります。result のデータ型を事前に知ることはできず、これは 値のデータ型、により異なり、 value-true または value-false. に接続された値により異なります。重要な点は、常に (文字列および整数などの)。単純型であるということです。 入力値を(ノードまたは行などの)複合型に接続することは If-Else 条件によりサポートされていません。
If-Else 条件は拡張することが可能です。これは、 追加 ( )ボタンをクリックすることにより、コンポーネントに複数の条件を追加できることを意味します。以前に追加された条件を削除するには、ボタンを削除 (
) をクリックします。この機能により、条件が true の場合は、複数の条件をチェックして、各条件のために異なる値を返すことができます。
展開された If-Else 条件 は上から下へと評価されます(最初の条件が最初にチェックされ、2番目が次にチェックされます)。 条件の全てが真ではない場合に値を返す場合は、 otherwise に接続してください。
手順を追ってのマッピングのサンプルは、 例: 値を条件付きで返すを参照してください。