質問
CSVコネクターでファイルを読み取ろうとしていますが、想定している列数と異なる列数のファイルが存在する可能性があります。
ファイルの列数をスクリプト内でカウントすることはできますか。
回答
[繰り返し(条件指定)]とMapperの[指定文字より後]ロジックを組み合わせることで列数のカウントができます。
■前提
文字列型のスクリプト変数を作成し、こちらに[固定長ファイル読み取り処理]などでカウント対象のデータが一行ぶん代入されていることを前提とします。
■設定方法
手順
-
[繰り返し(条件指定)] の設定
スクリプト変数の値が空文字と等しくない間は処理を繰り返す条件に設定してください。 -
[指定文字より後] ロジックの設定
Mapperに [指定文字より後] ロジックを配置して、スクリプト変数内データの区切り文字より後の文字列を取り出して同変数に再代入されるようにマッピングしてください。
手順1で設定した [繰り返し(条件指定)] にしたがって手順2の文字列の取り出しをスクリプト変数の値が空になるまで繰り返すことで、列の数が [繰り返し(条件指定)] のコンポーネント変数 [count] に格納されます。
■補足
CSVコネクターで設定した列数とカウントした列数が異なる場合にエラーを返したい、といった場合はあらかじめ想定していた列数をスクリプト変数などにセットしておき、カウントした列数と比較して条件分岐させるなどの手法をお試しください。
また [可変長ファイル読み取り] 処理では、設定した構造定義で読み取れないファイルを読み取った場合にはエラーを返します。
可変長コネクターを使用できる場合には、可変長ファイル読み取り処理の使用もご検討ください。
-
繰り返し(条件指定)処理
https://www.hulft.com/help/ja-jp/HULFTSquare/Content/Designer/Connector/flow_conditional_loop.htm - 指定文字より後ロジック
https://www.hulft.com/help/ja-jp/HULFTSquare/Content/Designer/Mapper/SubstringAfter.htm - 条件分岐
https://www.hulft.com/help/ja-jp/HULFTSquare/Content/Designer/Connector/flow_conditional_branch.htm - 例外通知
https://www.hulft.com/help/ja-jp/HULFTSquare/Content/Designer/Connector/proc_raise_exception.htm
- 可変長ファイル読み取り処理
https://www.hulft.com/help/ja-jp/HULFTSquare/Content/Designer/Connector/variablelength_get_data.htm - 可変長ウィザード
https://www.hulft.com/help/ja-jp/HULFTSquare/Content/Designer/Connector/variable_wizard.htm
コメント
0件のコメント
記事コメントは受け付けていません。