TT Lab
はじめる
学ぶ 学習パス コース

顧客データを扱う

再利用できる検証器を作る

TT Labで続きを見る

目標

一度書いたら捨てるクレンジングスクリプトではなく、毎週届くファイルを自動で判定する検証ツールを作れるようになります。

なぜ重要なのか

検証ツールの本当の試験は、壊れたファイルではなく正常なファイルです。ルールが厳しすぎて、正常なファイルまで失敗させると、人は毎週「どうせまたあれだろう」と言って無視し始め、2か月後に本当の問題が来たときも同じように無視します。その時点では、検証ツールがあるほうが、ないよりも悪いです。あると信じさせておきながら、実際には何も防げないからです。

そのため、検証ツールは常に2つの方向で試験します。正常なファイルで合格するか、壊れたファイルで失敗するか。そして、結果は終了コードで伝えなければなりません。合格なら0、失敗なら0以外の値です。そうしてこそ、バッチパイプラインにそのまま組み込めます。

/opt/data/validate/にファイルが4つあります。3つはそれぞれ違う方法で壊れていて、1つは正常です。すべてのファイルのヘッダーはid,customer,amount,region,dateです。

3つのルール

ステップ

  1. /root/validateディレクトリを作成してください。
  2. bad_schema.csvの形式違反の行数を/root/validate/schema_bad.txtに書いてください。
  3. bad_dupe.csvで、重複として捨てるべき行数を/root/validate/dupe_rows.txtに書いてください。
  4. bad_range.csvの範囲違反の行数を/root/validate/range_bad.txtに書いてください。
  5. good.csvの違反の行数を/root/validate/good_bad.txtに書いてください。
  6. 4つの値の合計を/root/validate/total_bad.txtに書いてください。
  7. /root/validate/validate.shを作成してください。最初の引数でCSVのパスを受け取り、違反が1つもなければ終了コード0、1つでもあれば0以外のコードで終わる必要があります。
  8. /root/validate/report.mdに、4つのファイルの名前とそれぞれの違反件数、そして合計を書いてください。

参考

作業ディレクトリを作る

/root/validateディレクトリを作成してください。

/root/validateの下に結果を集めます。

形式違反の行を数える

bad_schema.csvの形式違反の行数を/root/validate/schema_bad.txtに書いてください。

bad_schema.csvで、フィールド数、空の顧客名、非整数の金額の3つのうち1つでも違反している行の数です。

重複行を数える

bad_dupe.csvで、重複として捨てるべき行数を/root/validate/dupe_rows.txtに書いてください。

bad_dupe.csvで、同じidがもう一度出てきた行の数です。最初に出てきた行は数えません。

範囲違反の行を数える

bad_range.csvの範囲違反の行数を/root/validate/range_bad.txtに書いてください。

bad_range.csvで、amountが1以上10000000以下から外れた行です。0も違反です。

正常なファイルを確認する

good.csvの違反の行数を/root/validate/good_bad.txtに書いてください。

good.csvには違反がないはずです。ここで0が出なければ、検証ツールが過検知しています。

全体の違反の合計を出す

4つの値の合計を/root/validate/total_bad.txtに書いてください。

4つのファイルから出た数をすべて足します。

検証スクリプトを作る

/root/validate/validate.shを作成してください。最初の引数でCSVのパスを受け取り、違反が1つもなければ終了コード0、1つでもあれば0以外のコードで終わる必要があります。

ファイルのパスを引数で受け取り、合格なら終了コード0、違反があれば0以外の値で終わる必要があります。

検証レポートを書く

/root/validate/report.mdに、4つのファイルの名前とそれぞれの違反件数、そして合計を書いてください。

4つのファイル名とそれぞれの違反件数、そして合計が入っている必要があります。