ミスを少なくするために登録形式を統一する | 第6回 データクレンジング手法

AUTHOR :   ギックス

本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)

同じ種類のデータの登録形式を統一しないとミスが起きやすい

前回、データ型を変えるデータクレンジング方法について記載しましたが、今回は、文字型のデータ型について、登録形式の統一の大切さについて記載したいと思います。(参考:データベースのテーブルとは)

日付フォーマットは統一する

売上日や入会日などの日付情報は、日付型のデータ型に登録する場合もありますが、利便性を考慮して文字列型のデータ型に登録することが多いです。しかし、文字列型は日付型に比べ自由度が高いため、1つの日付を表現する文字列のパターンは無数にあります。例えば「2012年12月12日」を文字列で表現する場合、「2012/12/12」「2012-12-12」「20121212」などのパターンがあります。
日付フォーマットを統一しないとテーブル項目ごとに異なる日付フォーマットで比較する事態になります。例えば「2012年12月12日」の情報を取得する場合、売上情報テーブルの売上日は「2012/12/12」で比較、会員情報テーブルの入会日は「20121212」で比較するといった事態が発生します。これは、非常に混乱するため、ミスが発生しやすくなります。
様々な日付フォーマットを検証したところ、文字列の日付フォーマットは「20121212」のように年月日を区切り文字なしで結合する形で日付フォーマットを統一することが最適と判断しました。理由は、テーブルの日付項目のデータ型が「固定長文字列8桁」になり、これで表現できる日付フォーマットは、この1種類しか思い浮かべないため、テーブル利用者はデータ型の定義だけで日付フォーマットが推測できるためです。

固定長文字列は同じ長さで比較する必要がある

固定長文字列は、データベースで定義された桁数までスペースが補完されます。例えば文字列データ「123」を固定長文字列5桁のテーブル項目に保存した場合、「123△△」(スペースを△で表現)としてデータベースに登録されます。そのため、データベースに登録されたデータを取得するためには、データベースの項目を「123△△」で比較しないとヒットしません。
この現象は、テーブル間の結合でも発生する場合があります。例えば、会員番号を売上情報テーブルでは固定長文字列8桁、会員情報テーブルでは固定長文字列10桁と定義した場合、この2つを単純に比較した場合、違う値として扱われる場合があります。これは、売上情報テーブルが「12345678」、会員情報テーブルが「12345678△△」と異なる値でデータベースに保存されたためです。
固定長文字列のデータ型を使用する場合は、元となるデータファイルの項目の桁数に合わせ、全てのテーブルの桁数を合わせる必要があります。

分かりにくい登録フォーマットは設計書に残す

今回は、日付フォーマットを中心に説明しましたが、郵便番号、クレジットカード番号などのハイフンの登録の有無など、日付フォーマット以外にも登録フォーマットを統一する必要がある項目があり、テーブルのデータ型だけでは、どのようなフォーマットでデータが登録されているか分からない場合もあります。そのため、テーブル定義書などの設計書に、登録するフォーマットを記載を残すことをお勧めします。
 
【連載記事リスト】
1. データクレンジングとは
2. データベースに取込める形にデータファイルを加工
3. データベースのデータ型を変える
4. 扱いやすい単位にデータ加工
5. 管理情報を追加してテーブルを統合
6. ミスを少なくするために登録形式を統一する

SERVICE