CSVに「email列がある」だけでは、必須項目チェックは終わらない。
必要なのは、列そのものが存在するかと、その列の各行に値が入っているかを分けて確認することだ。
まず必須列を決める
顧客CSVなら顧客ID、メールアドレス、氏名。商品CSVならSKU、商品名、価格などが候補になる。
何が必須かはインポート先の仕様で決める。すべての列を必須にすると、不要な修正作業が増える。
ヘッダーに必須列が存在するか
必須列リストが email と name なら、最初にヘッダーへ両方あるかを見る。
列名の前後空白や大文字小文字をどう扱うかも先に決める。
各行の空欄を見る
列が存在していても、値が空ならインポート前に止める必要がある。
空文字やスペースだけの値を「入力済み」とみなすかも決める。多くの業務では、前後空白を除いた結果が空なら欠損として扱うほうが安全だ。
自動補完しすぎない
必須値がないとき、推測で値を作ると別の事故になる。
欠損はFAILとして行番号を出し、元データの管理者に戻すほうが追跡しやすい。
出力に残すもの
- 行番号
- 列名
- 問題タイプ
- 元の値
- 判定
どこが悪いかが分かれば、修正後に同じルールでもう一度検査できる。
ZEROHANDのCSV Preflight v0.1はRequired列の空欄をFAILとして出すRelease Candidate。挙動は無料サンプルCSVでも試せる。
必須チェックの目的は、欠損を勝手に直すことではない。インポート前に止め、修正箇所を特定できる状態にすることだ。