見出し画像

データベース素人がデータクレンジングを任された。

1. データベース素人のこと

データベース素人のことは、先日公開した以下の記事を参照してほしい。
要約すると、データベースはSQLでデータいじくるくらいのド素人である。

2. クレンジング対象データ

どうしようもないデータ群。わかっているだけで、これだけのやばい点がある。

・27テーブルで済むところ、110テーブルにまで同じようなテーブルが作られている。
・複数テーブルに重複したデータが格納されている。
・それとは別に廃止されたテーブルや試しに作られたテーブルが本番にも残っている。空だったりデータが入っていたり。
・データの整合性なんてものはない。むちゃくちゃ。
・誰もシステムの全容がわからない。設計書が部分的に存在したり嘘が書いてある。
・システムのコードがネスト多用してるし重複してて解読にものすごく時間がかかる。

というわけで、移行対象の42テーブルももちろん信用ならないため、クレンジングという名の変なデータ探し兼是正をしなければならない

3. 「データクレンジング」とは?

前回同様、データベースはド素人なので、調べて検討してをしなければならない。遊ぶ金が欲しいから頑張る。

データクレンジングとは、データベースなどに保存されているデータの中から、重複や誤記、表記の揺れなどを探し出し、削除や修正、正規化などを行ってデータの品質を高めること。

IT用語辞典 e-Wordsより引用。

とりあえず、「データをきれいにすること」みたい。

4. データクレンジング、どうやる?

一番適当だと、移行リハーサルしたときに文字化けするところだけ直す。
一番丁寧だと、全データを打鍵か目視かでチェックして直す。

素人だから、とても適当だけど合っていると思う。

具体的な手法について、良さそうな方法を見つけたため、こちらをベースに取り組んでみることにする。

4-1. プロファイリング

・完全性:データに欠損はないか?

めっちゃある。
コードがお粗末で、履歴情報が破棄されている箇所がある。
とはいえ、もうかれこれ20年動いているシステムで、穴だらけのシステムなので、拾いようがない。スルーする。

・適合性:データに表記の揺れはないか?

めっちゃあるが、今回対象のデータには少ないかも?表記揺れは問題ではないシステムなので、スルーする。

・一貫性:データに不整合はないか?

めっちゃある。
とはいえ、もうかれこれ20年動いているシステムで(中略)スルーする。

・精 度:データに誤りやノイズはないか?

めっちゃある。
誤りについては、対象システムではユーザーに棚卸依頼をしてもらう他ない。
ノイズとして、思い当たるものが2つほどある。

1つ目は「環境依存文字」の入力が可能であるところ。不具合の原因となりがちなので変換しておいた方が良いと思う。

2つ目は「スペースの全半角」が統一されていないところ。何か起こるか知らないが、統一されていないのが気に食わないから対象にする。画面からは全角しか入力できないんだから、全部全角にしたらええねん!

・重複度:データに重複はないか?

めっっっっっちゃある。
同じデータをいくつものテーブルにばらまいてある。
ぶっちゃけると資格管理システムなんだけど、資格の種類によって有効期限が管理できない仕様になっている。ゆえに、有効期限が管理できない正しい資格の種類と、有効期限が管理できる正しくない資格の種類両方を登録して利用している。

スルーしないとしたのは「精度」と「重複度」。
「精度」はクレンジング、「重複度」はマージを行うらしい。

4-2. クレンジング

【精 度】環境依存文字/スペースの全半角
検索をかけて、変換をかける。
「㈱」→「(株)」とか。

4-3. マージ

【重複度】正しくない登録
同一名称のデータを探し出して棚卸しと統合をするしかない。
わかる範囲では実施するが、登録しているユーザーにも棚多しをしてもらう。クレンジングだけでどうにかなる話ではない。

4-4. モニタリング・キープ

今回はデータ移行に伴うデータクレンジングのみ対象なので、対象外。

5. まとめ

素人が頭をひねって対応した感じ、たぶんこんな感じ。

①プロファイリング
データがどうよろしくないのかを分析ししょう。
これさえできれば勝ったも同然。
以下5項目に分けて考えるとわかりやすい。

・完全性:データに欠損はないか?
・適合性:データに表記の揺れはないか?
・一貫性:データに不整合はないか?
・精 度:データに誤りやノイズはないか?
・重複度:データに重複はないか?

②クレンジング
プロファイリングの「重複性」以外はすべてこれで対応します。
要するに、あるべきと思う形にしてあげればOK。
「完全性」→ 欠損を補完する
「適合性」→ 表記揺れを統一する
「一貫性」→ 不整合を直す
「精 度」→ 誤りを直す、ノイズを排除する

③マージ
プロファイリングの「重複性」について対応する。
「重複性」→ 重複しているデータを特定し、統合(=マージ)する。

④モニタリング・キープ
データをきれいにしたら、保ってあげる必要がある。

クレンジング対象の発生源を断つ!
システムの入力画面是正や運用方法の改善で、汚れたデータを作らせない。

汚れたら洗う
定期的にデータクレンジングして、キープする。

投げ銭方式です。 いただいたサポートは、もれなく寿司代にします。 回転寿司もスーパーのパック寿司も大好きです。 1巻分、1皿分、1パック分からお気軽にどうぞ!