中間テーブルのススメ:大規模データ分析を行う場合は中間データを作ろう | データ分析のお作法

AUTHOR :   ギックス

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

最初からビッグデータに挑んでませんか? 段階的に巨大なデータを掘り下げることが重要

データ分析を行うとき、10万件程度のデータから分析を行う場合は、検索、集計などの処理時間も短く、特に困ることはないと思います。しかし、1,000万件以上のデータを扱おうとした場合、処理時間が掛かってしまったり、分析ツールがフリーズ(画面が固まって動かなくなる)する事は多いと思います。今回は、DBのテーブルを例に大規模データから中間データとして中間テーブルを作るメリットをご紹介します。

DWHから中間テーブルを作れば、それ以降の分析が楽になる

中間テーブルの例として、下記のDWHにある売上情報から「分析で必要な行だけを抽出」し、「分析で必要な項目だけを射影」した中間テーブルの売上情報について、中間テーブルを作るのメリットを説明します。(参照:データウェアハウス(DWH)とは)db_temp

何度も同じデータを分析する場合に処理時間を短縮できる

1度のDBへの問合せを行う場合、中間テーブルを作成し、そこから問い合わせる方法は、処理時間と手続きの観点から無駄な作業に思えます。しかし、データ分析では、同じ抽出条件のデータに対して、様々な条件で集計などを行う場面が多いと思います。この時、毎回のように巨大なテーブルに対して、抽出処理を行っていては、処理時間も掛かりますし、DBに対して負担が掛かり、他のDBアクセス者の処理時間にも影響が出てしまいます。
そのため、分析に必要な情報のみを中間テーブルに登録し、そこから様々な条件で集計などの問合せを行うようにします。これによって、毎回、巨大なテーブルに対して、抽出処理を行うことがなくなり、総合的に処理時間を短縮することができます。
また、中間テーブルに必要な項目だけを射影することで、TableauなどのBIツールでテーブル情報を引き込んでくる場合、引き込んでくる対象のテーブル項目が少なくなり、結果、データ取得時間を短縮できます。

問合せのSQLがシンプルになる

同じ抽出条件でDBに問い合わせる場合、当然、問い合わせを行うSQL命令には、同じ抽出条件の命令を記載する必要があり、これは、非常に非効率なやり方です。
しかし、中間テーブルに登録する際、この抽出条件を一度だけ記載すれば、中間テーブルに問い合わせを行うSQL命令には、同一の抽出条件を記載する必要はありません。これによって、総合的に問い合わせを行うSQL命令がシンプルのなり、抽出条件の記載ミスを減らすことができます。

分析対象のデータが固定できる

DWHの売上情報は、定期的にデータが蓄積されているテーブルになっています。
例えば、毎晩0時に1日分の売上を、DWHの売上情報に追加する夜間バッチが起動しているとします。この場合、DWHの「前日の分析対象データ」と「当日の分析対象データ」が異なり、問合せの条件によっては、同じ結果が得られない場合があります。
しかし、最初に分析対象データを中間テーブルに待避すれば、DWHのデータが変わろうとも、同じデータで分析が行えます。

抽出ミスに気付きやすく、修正範囲が限定できる

抽出条件が複雑になれば、当然のように抽出条件のミスも起きやすくなります。この時、抽出された結果が、中間テーブルに登録されているため、分析元データの検証が行いやすくなります。また、抽出条件が、中間テーブルの登録時の問い合わせを行うSQL命令のみ記載されていることにより、このSQL命令を修正すれば、ほかの中間テーブルに問い合わせを行うSQL命令には、修正を加える必要はありません。

中間テーブルを作る場合はクラウドDBが最適

DWHがあるDBに中間テーブルを作る懸念点として、中間テーブルの情報を登録するためのDBの記憶容量が気になります。パソコンにDB環境がある場合、記憶容量を増やす場合は、ハードディスクドライブを追加する必要があり、追加する数に限界があります。しかし、クラウドDBの場合、管理画面から簡単な操作でDBの記憶容量を増やすことが可能です。また、クラウドDBの記憶容量の限界は、非常に高く設定されていますので、DBの記憶容量を気にすることはありません。(参照:クラウドデータベースとは)

連載/関連記事リスト:データ分析のお作法
SERVICE