多次元分析の概要とデータ分析のポイント

仕事でSQLServerを使った多次元データ分析の案件を担当することになったので勉強中。

@ITの記事がわかりやすくまとまってたので、自分なりに要約してみた。

★第2回 多次元分析の概要とデータ分析のポイント

■定型、非定型検索およびレポート参照における主なデータ分析機能
http://www.atmarkit.co.jp/fdb/rensai/sqls_analysis02/sqls_analysis02_01.html

・検索機能

条件指定 定型検索であれば固定の項目に値を設定し、非定型検索であれば任意の項目に値を設定してデータを抽出する機能
集計 検索したデータを特定の項目でグルーピングして集計を行う機能
ソート 検索したデータを特定の項目で並べ替える機能
計算式 検索したデータに構成比や予実対比などの計算した値を付加できる機能

・出力機能

グラフ 検索したデータをグラフとして表示する機能
各種形式出力 検索したデータをPDF、Excel、XMLなどの形式で出力する機能

・管理機能

利用状況     レポート単位に利用者からのアクセス状況(回数、頻度)を把握する機能
アクセス制限 レポート単位にアクセス制限を設定する機能

→第4回 Reporting Servicesを使ったレポート作成の技
http://www.atmarkit.co.jp/fdb/rensai/sqls_analysis04/sqls_analysis04_01.html

SSRS(SQLServer Reporting Services)

・定型検索
・ブラウザから参照

■多次元データ分析の概要
http://www.atmarkit.co.jp/fdb/rensai/sqls_analysis02/sqls_analysis02_02.html

多次元データ分析は複数の次元(ディメンション)を切り替えて、さまざまな角度で分析できるのが特徴
「キューブ」という独自のデータベースを構築する必要がある

キューブの構成

・分析の視点となるディメンション
・金額や数量などの分析の対象となるメジャー(集計した値)

で構成されている。(図はリンク先参照)

キューブのデータモデル

MOLAP

多次元データベースは独自形式(MDB)
一般的にはリレーショナル・データベースを使用したROLAPよりレスポンスは良い
SQLのような標準のAPIはなく、ディメンションの数が増加するとデータ容量も増加する

ROLAP

多次元データベースにリレーショナル・データベースを使用する
ディメンションを柔軟に変更できるのが特徴
MOLAPに比べパフォーマンスが低い

HOLAP

多次元データベースにMDB(集計データ)とRDB(明細データ)を使用
MOLAPとROLAPの両方の特徴を備えている

ディメンションの階層構造とメンバ

ディメンションには階層構造を定義する
各階層に属するデータは「メンバ」と呼ぶ
多次元分析はディメンションと階層の定義で分析できる範囲が決定するため、階層の定義は重要
階層はどのレベルでデータを分析したいかで決定する

例)都道府県-地区-店舗 のような階層

多次元分析方法(リンク先の図がわかりやすい)

ドリルダウン

ディメンションの現在の階層よりも下位の階層のデータを分析する
例:関東地区から下位の都道府県を検索する

ドリルアップ

ディメンションの現在の階層よりも上位の階層のデータを分析する
例:都道府県から上位の関東地区を検索する

スライス

ディメンションの特定の値を選択して、データを絞り込んで分析する
例:特定の商品を指定して、その商品の月別、店舗別売り上げを見る

ダイス

ディメンションを入れ替えて、異なる角度で分析する
例:店別/期間別 ⇒ 商品別/店別 ⇒ 商品別/期間別

ドリルスルー

集計データの基になる明細データを分析する
例:11月にA店で売れたX商品の内訳(明細データ)検索

■多次元分析のポイント
http://www.atmarkit.co.jp/fdb/rensai/sqls_analysis02/sqls_analysis02_03.html

・複数の分析視点を組み合わせた集計値の分析(クロス集計)に向いている

キューブは集計値を効率良く検索することに特化したデータベースなので、明細データを検索するのは不得意
集計する数値項目がないデータはキューブを構築できないため分析できない

・分析視点に階層を設定できる分析に向いている

階層構造を設定しなければ、ドリルダウン/ドリルアップという多次元分析特有の分析機能が使えないため、キューブを構築する利点がない

・複雑なデータの絞り込みを行わず、一覧的にデータを見る分析に向いている

例:商品ディメンションと店舗ディメンションでの絞り込み
(商品=A or  商品=X) and (店舗=B or  店舗=Z) ⇒ 検索可
(商品=A and 店舗=B) or  (商品=X and 店舗=Z) ⇒ 検索不可

■キューブ設計におけるポイント

1. ディメンションとディメンション階層の決定

多次元分析ではディメンションの構成(種類と階層構造)で分析できる範囲が決定するため重要
ディメンションの構成は以下の両方の視点で決定する
・アウトプットから洗い出すボトムアップアプローチの視点
・データの構造から検討するトップダウンアプローチの視点
・ディメンションの構成が決定すれば、キューブ設計の半分は終了したといっても過言ではないくらい重要

2. ディメンションの数

一般的に1つのキューブに設定するディメンションの数が多くなると、キューブのデータ更新処理時間とサイズが増加する
増加傾向はディメンションのメンバ数やファクトデータの件数により異なる
キューブに設定するディメンションの数はキューブのデータ更新処理時間を目安に決定する

3. データの整備

1つのファクトデータを複数のディメンションで分析するため、データの整合性を確保することが重要(商品ディメンションを例にすると、新製品のファクトデータが発生したときには、商品ディメンションには新製品のレコードが存在していなければならない。存在していないと新製品のファクトデータはキューブに取り込まれないため、数値の信頼性がなくなる。)

4. 有効な集計値の保持

ファクトデータが大量になると分析のレスポンスを保証するのが難しくなる
レスポンスは、多くの集計を作成することで保証できるがキューブを更新する処理時間も増加する
レスポンスと運用(キューブの処理時間)を両立させるためには、無駄な集計値は作成せず、有効な集計値に限定して作成する必要がある

→第3回 Analysis Servicesを使って多次元分析に挑戦しよう
http://www.atmarkit.co.jp/fdb/rensai/sqls_analysis03/sqls_analysis03_01.html

手順はリンク先参照

SSAS(SQLServer Analysis Services)

・多次元分析
・エクセルのピボットテーブルで参照