質問
複数カラムが存在するCSVファイルを読み取り、カラムの値に応じてそれぞれ異なる値を出力したいと考えています。
例えば以下のような条件で処理を行いたい場合、どのコンポーネントを利用すればよいでしょうか。
- カラム1の値が”A”、カラム2の値が”あ”のときは「1」を出力
- カラム1の値が”A”、カラム2の値が”い”のときは「2」を出力
- カラム1の値が”B”、カラム2の値が”う”のときはカラム3の値を出力
- それ以外の場合はカラム4の値を出力
回答
条件による出力の切り替えは、マッピングの[スイッチ判定による出力の切り替え] ロジックを活用することで実現できます。
処理の基本構造
- カラム1とカラム2それぞれの値を[同じ]ロジックで[単一文字列定数]と比較します
- [And演算]ロジックでカラム1、カラム2両方の比較結果をチェックします
- [スイッチ判定による出力の切り替え] ロジックで、カラム1、カラム2の比較結果が条件に沿っていれば所定の値を出力し、そうでなければ次の判定を行います
- 上記1~3を設定したい条件の数だけ繰り返します
処理構築例
- [CSVファイル読み込み]でカラム1~カラム4の列があるCSVファイルを読み込みます
- マッピングを配置し、[CSVファイル読み込み]とフローでつなぎます
- 同マッピングにて、下記ロジックを配置します
・[同じ]ロジック(2つ)
・[単一行文字列定数]ロジック(2つ)
・[And演算]ロジック
・[スイッチ判定による出力の切り替え] ロジック*
*設定する条件数は任意ですが、例では3を設定します
・[数値定数]ロジック - [単一行文字列定数]ロジックに、それぞれ判定基準とする文字を設定します
(例では「A」と「あ」をそれぞれ設定します) - [同じ]ロジックに、比較対象となるCSVデータのカラムと[単一文字列定数]ロジックをリンクします
(例では「カラム1」と「A」、「カラム2」と「あ」をそれぞれリンクさせます) - 上記5でリンクした2つの[同じ]ロジックを[And演算]ロジックにリンクし、同ロジックを[スイッチ判定による出力の切り替え] ロジックにリンクします
- [数値定数]ロジックに、条件に合致したときに出力したい数値を設定し、上記6同様に[スイッチ判定による出力の切り替え] ロジックにリンクします
(例では「1」を設定します) - 上記4~7を、設定したい条件の数だけ行います
(コピーコマンド等を利用すると比較的容易です。例ではあと2回行います) - 入力カラムの値をそのまま出力したい場合には、入力データのカラムをそのまま[スイッチ判定による出力の切り替え] ロジックにリンクします
(ここではカラム3とカラム4をそのまま出力するよう設定します)
マッピングイメージ
補足
各ロジックの詳細については、下記マニュアルページもご参照ください。
また、[スイッチ判定による出力の切り替え] ロジックのユースケースについては、オンプレミス版Dataspider Servistaの資料ではありますが下記ページも併せてご参照ください。
◇複数の条件によって出力する値を振り分けたい
コメント
0件のコメント
記事コメントは受け付けていません。