質問
以下のように2つのテーブルを結合処理のLEFT OUTER JOINで取得する処理を検討しています。
処理時に特定の列の値がNULLであった場合に処理を異常終了させる方法を教えてください。
・Table1
A, B, C
1, a, b
2, c, d
・Table2
A, D, E
1, a, e
3, f, g
・結果
A, B, C, D, E
1, a, b, a, e
2, c, d →Table2のD列に値がないためエラーとしたい。
回答
結合処理を行った後に繰り返し処理(データ件数)にて各レコードの特定列の値がNULLでないかを判定することで実現可能です。
以下にスクリプト構成を紹介します。
■前提条件
今回、Table1とTable2のデータおよび出力先をcsvファイルとしています。
■スクリプトのフロー図
■各コンポーネントの設定内容
- 事前準備
特定列の値を格納するスクリプト変数を用意します。 - CSVファイル読み取り処理
Table1とTable2のデータを読み取ります。 - 結合処理
入力データ(LEFT)にはTable1、入力データ(Right)にはTable2を設定します。
処理種別は「LEFT OUTER JOIN」を選択します。
結合キー設定では入力データそれぞれのA列を設定します。 - ソート処理
結合処理では結果データの並び順が保証されません。
ご連絡いただいたようにA列の値の昇順とするため、ソート処理を使用しています。
ソートキー設定の列名をA列、データ型を数値、順序を昇順に設定します。 - 繰り返し(データ件数)処理
- 変数代入
繰り返し(データ件数)処理配下のD列から、nullを置換ロジックを経由し、あらかじめ準備しておいたスクリプト変数につなげます。
nullを置換ロジックでは特に何も設定しません。 - 条件分岐
条件では、変数と固定値の比較から、スクリプト変数が次の値と等しいを選択します。
値の箇所は何も設定しません。 - 例外通知
D列の値がない場合にスクリプトを異常終了させるために配置します。
メッセージは異常終了時に通知したい内容をご設定ください。 - マッピング
ソート後の結合データをCSVファイルに書き込むよう設定します。
本処理は繰り返し(データ件数)の処理内となるため、foreach配下の各列を出力データとつなげます。 - CSVファイル書き込み処理
本処理は繰り返し(データ件数)の処理内となるため、書き込み設定では上書きや追加書き込みのオプションをチェックします。
コメント
0件のコメント
記事コメントは受け付けていません。