質問
CSVファイルやExcelファイルを読み取るコンポーネントで、想定した列数よりも少ない列をもつファイルを読み取った際の動作を確認したところ、設定と実際のファイルで項目数が異なる場合でも設定した項目の分だけ読み取って正常終了しました。
このように、データの列数が読み取り設定より少なかった場合を検知しエラーを返すようにすることは可能ですか。
回答
[データチェック処理] と [データチェックエラー詳細取得処理] を利用することで、読みこんだデータの列数が想定より少ない場合を検知することが可能です。
[データチェック処理] にて判定対象の列を入力必須にすることで、設定していた列数より少ないデータを読み取った際にデータの一部がnullとして入力されたことを検知しエラーを返すことができます。
たとえば、以下のように構築することで、設定した列数より少ない列のデータが読み込まれた際に例外を返すことができます。
■前提
本構築例では、4列のデータを想定して設定したスクリプトにて4列未満のデータが読み込まれたことを検出した場合にスクリプトを異常終了させたいケースとして説明します。
■実装イメージ
■実装手順
- CSVコネクターの [CSV読み取り処理] や Excelコネクターの [シートから読み取り処理]にて、想定している4列ぶんの読み取り設定を行います
- [データチェック処理] を配置し、「データチェック条件一覧」に想定している4列ぶんの条件*を設定します
*チェック対象にしたい行に「必須」のチェックを入れます - [条件分岐] を配置し、[データチェック処理] のコンポーネント変数「unmatched_count」が1以上のときに処理が分岐するよう設定します
これによって、データチェックで設定した条件(ここでは、nullや空文字が存在しない)に合致しないレコードがあった場合とそうでない場合で処理を分岐させることができます - 分岐条件に合致した場合の処理として、以下のコンポーネントを配置します
・[データチェックエラー詳細取得処理]
・[データログ出力(テーブルモデル型)処理]
・[例外通知]
これによって、データチェックにて異常を検知した際に、エラー内容を実行ログに出力したうえで任意のメッセージを出力しスクリプトを異常終了させることができます
たとえば3列のデータを読み取った場合、チェック対象の行でいずれかの値がnullとなるため[データチェック処理] にて条件に合致しないレコードとして判定され、処理は [例外通知] のほうへ分岐します
補足
[データログ出力(テーブルモデル型)処理] にて [データチェックエラー詳細取得処理] の内容が実行ログに出力されるため、ここを確認することでどの列が不足しているかを確認することも可能です。
例えば、以下のログでは4行すべての4列目にnullが入っていることから、読み取ったデータは4列目が不足していることが分かります。
コメント
0件のコメント
記事コメントは受け付けていません。