質問
csvの空欄データに前の行の値へ変更する方法はありますか。
例)
以下データの内、2レコード目の[Time1]のデータを1レコード目のデータ「8」、
3レコード目の[Time2]のデータを2レコード目の「24」としてCSV出力したい。
YearDate1,Time1,Time2,YearDateTime
2022/5/3,8,24,2022/5/1 1:00
2022/5/3,,24,2022/5/1 1:00
2022/5/3,8,,2022/5/1 1:00
回答
CSVファイルを読み取り処理およびMapper、CSVファイル書き込み処理にて実現可能です。
以下、スクリプトの処理内容をご参照ください。
それぞれのロジックにつきましては、以下マニュアルサイトをご参照ください。
・nullチェックロジック
・スイッチ判定による出力の切り替えロジック
ご提供いただきましたCSVファイルの例を元に、当サポートにて検証したスクリプトの作成内容を紹介させていただきますので、ご参考としていただけましたら幸いです。
もし、ご質問の意図にそぐわない場合はお申し付けください。
■処理の概要
CSVファイルを読み取る際に、特定の列データをスクリプト変数へ格納することで、前の行のデータとして保持する。
Mapperにて変数代入を行うとともに、nullチェックロジック、スイッチ判定による出力の切り替えロジックを用いて、空欄であるかで出力データを切り替えて出力する。
2列目の「Time1」と3列目の「Time2」について、データが空欄の際に前の行の値をコピーして入力する。
■スクリプトのフロー
■スクリプトの作成概要
- 以下、スクリプト変数を2つ用意する。
Time1
Time2 - CSVファイル読み取り処理を配置する。
[読み取り設定] > [最初の行は値として取得しない]にチェックを入れる。 - CSVファイル書き込み処理を配置する。
- マッピングを配置する
- Mapper内で以下を設定する ※同様に2列目「Time1」を3列目「Time2」に置き換えて設定する。
①Time1とスクリプト変数「Time1」を繋ぐ。
②Time1とnullチェックロジックを繋ぐ。
③スイッチ判定による出力の切り替えロジックを配置する。
④スイッチ判定による出力の切り替えロジックで以下マッピングをする。
1つ目のハンドラにnullチェックロジックを繋ぐ。
2つ目のハンドラにスクリプト変数「Time1」を繋ぐ。
3つ目のハンドラに入力データの2列目を繋ぐ。
ロジックの出力と出力データの2列目を繋ぐ。
■マッピングのイメージ
コメント
0件のコメント
記事コメントは受け付けていません。