ホーム > ライブラリー > Teradata Insight > データマイニング・ヒッチハイクガイド > 第5回:データベース基礎講座
山本 泰史
マーケティング統括部
マーケティング部 スペシャリスト
データマイニングにおいて必要となるデータセットの形式に対して、データベース/データウェアハウス側において保持しているデータの形式が等しいことは稀です。そのため、データマイニングに従事される方は、データウェアハウスにどのようなデータが存在しており、利用可能なデータがどのような形で蓄積されているのかを理解する必要があります。これを以って初めて、本来必要なデータセットの形式でデータを「作成」することが可能となります。そのため、ここではデータベースの構造と、それを用いてどのようにデータセットを作成するかについて整理をしていきます。
データベース、そしてデータベースを用いて構築されたデータウェアハウスにおいて、データはどのように管理されているのでしょうか。データベースとはとどのつまり、複数の表の集合です。そして、この表をテーブルと呼んでいます。つまり、データベースとはテーブルの集合になります。さらにテーブルは、データセット同様、列(カラム)と行(レコード)によって構築されています。その中に存在するのがデータ値です。企業のデータウェアハウスには一般に、数百から数千に及ぶテーブルが存在し、単一のテーブルでも数千万件から数億件に及ぶものもあれば、数件のテーブルも存在します。ある小売業のレシート明細データが購入商品毎に毎日蓄積される様を、通信業の通話明細ログが毎日蓄積される様を、そして銀行の ATM操作が毎日蓄積される様を想像していただければ、数千万件から数億件という規模もご納得いただけると思います。一方、例えば性別の情報を記述したデータ値は男女、もしくは不明の 2 ないし 3値しか取り得ず、この区分情報(マスターデータと呼びます)を保持したテーブルはたった数件のテーブルということになります。
一方、顧客属性のテーブルにも性別に関する情報が 0、1、もしくは 2 という形で保持されています。この情報によって「顧客番号 12784番は 0 = 女性である」ということが分かります。このように顧客属性のテーブルに存在する性別情報として、他のテーブルとの関係を保ってくれている情報を「外部キー(FK: Foreign Key)」と呼びます。外部キーがあって初めて、顧客属性テーブルに存在する性別情報が意味を持つようになり、データを見る側からすると意味を理解できるようになるのです。数百、数千存在するデータウェアハウス内のテーブルにはこのような形で主キー、外部キーが設定されており、一方のテーブルで主キーとなっている情報が、他の幾つかのテーブルでは外部キーになっています。このような形で、それぞれのテーブル間では見えない糸のような形で関係付けられており、これによって、データを結合することが可能となります。
おそらく情報システム部門では、データベースのレイアウトという形で以下図2 のようなデータベース構造を記述したドキュメントを保持しているはずです(*4)。これらのドキュメントを参照させていただき、自らが実施すべき分析テーマに合致したデータがどのように蓄積されているのかを把握する必要があります。
データベースからデータを取得するとき、そしてデータベースにまつわる操作の全ては SQL (Structured Query Language)によってなされます。Query Language と呼ぶことからも分かるように、SQL はデータベースへ問い合わせるための言葉です。もちろんデータを取得する際に、このような言語を直接的に用いる必要はなく、データマイニングのツールに対してユーザーインターフェースを経由して操作(クリックとか、入力とか)すれば SQL が背後で自動的に作成され、データベースに対して発行されるのですが、それでもどのようなことが出来るのかは理解する必要があります。以降、データマイニングを実施するために良く用いられる、データの取得、操作、そして結合について触れていきます(*5)。
データを取得する際には、SELECT文と呼ばれる指示をデータベースに対して行ないます。欲しいカラム名称、そのカラムが格納されているテーブルの名称を指定することによって、取得したいカラムをデータベースから抜き出してくることが可能です。また行を指定したい場合には、その条件を設定します。 例えば以下のような構文イメージになります。FROM には取得対象となるテーブル名、WHERE には対象行の条件を設定します。
| SELECT | 顧客名称, 郵便番号 | (カラム名) |
| FROM | 顧客 | (テーブル名) |
| WHERE | 郵便番号 = 1100002 ; | (カラム名 結合子 値) |
ここでは結合子として=(等しい)を利用していますが、>(大なり)、<(小なり)、>=(以上)、<=(以下)、<>(等しくない)等で条件を絞り込むことが可能です。また[WHERE 買上数量 BETWEEN 100 AND 200]で、買上数量の値が 100 から 200 の間に該当する行のみを取得することができます。同様に[WHERE 買上数量 NOT BETWEEN 100 AND 200]で、買上数量が 100 より低く、200 より高い行をとることが可能です。複数条件の両方に合致する行を取得する場合には、AND句を利用して絞り込むことが可能であり、複数条件のいずれかに合致する行を取得する場合には OR句を利用して絞り込むことが可能です。また、WHERE NOT とすることにより、以降に記述する条件に合致しない行のみに絞り込むことも可能となります。
次回は引き続き、データの操作と結合について説明をしていきます。
*4: 通常、テーブル名やカラム名は英語(ローマ字表記)で管理されています。ここでは分かりやすくするために日本語にて表記しています。
*5: SQL には行の追加挿入(INSERT)、行の上書き更新(UPDATE)、テーブルやカラムの新規作成(CREATE)と削除(DELETE)等、データベースを管理するための様々な構文が存在しますが、ここではデータベースの利益を享受する、つまりデータマイニングを行なう際に必要な箇所だけの説明にとどめ、その他は割愛します。