SSAS + SSRS レポート作成してみた

SSAS + SSRS レポート作成してみた

SSAS(Data Mining以外), SSIS, SSRS の本をざっと通して読み終わったので、
実際の業務でたまってるログに対してSSAS + SSRS レポート作成してみた。

単純に番号と名前が入っているマスターテーブルと、番号列を関連付けして マスターテーブルにある名前をディメンションとして使うのはさくっと出来た。
データソース – データソースビュー – ディメンション – キューブ と作っていく基本は習得できたようだ。

で、時間ごとに集計させるところで詰まる。
本のサンプル等では dimTime という専用のテーブルがあって、ある時刻(範囲)に対するキーが割り当てられており、ログテーブル側にはそのキーが記録されているような状況。

現実のデータについては今までのところそんなことはしてない。
が、きっと何かあるに違いないとディメンションウィザードを起動すると、「サーバー時間ディメンション」というのがある。
テーブルを独自に作らなくても内部的に dimTime テーブルのようなものを保持してくれるようだ。
ただし最小単位は「1日単位でしか作れない」。せめて1時間単位ぐらいにしたかったのだがとりあえず進めることにする。
『dim時間』という名前にしてみた。

キューブにこの『dim時間』ディメンションを割り当てて、ディメンションの使用法のところでログテーブルの「日時」フィールドとつなげてやる。
というので出来そうかと思ったがデプロイ時にエラーとなった。

ログテーブル側のフィールドも 日付 だけのデータじゃないとダメ。要するに値が完全一致する必要がある。
そんなわけでデータソースビューでもってくるところで時刻データを落とすことにした。

SELECT ID,コード,CAST(CAST(日時 AS bigint) AS datetime) AS 日時 FROM とあるログ WHERE ...

bigintにキャストすると 小数部分=時刻部分 が落ちるという仕組み。

プロジェクト REAL : Analysis Services の技術的なドリルダウン
には「ベスト プラクティス : できるだけスタンドアロンの時間ディメンション テーブルを作成してください。」という節がある。

アプリケーションで、日よりも詳細なドリルダウンが必要な場合は、時刻を 2 つのディメンションに分けることを検討します。1 つ目のディメンションは時刻を日レベルで記録し、2 つ目のディメンションは時刻を記録します。

ディメンションとしては別に扱った方がいいということらしい。

データ量のこともあるが、時刻レベルについては不変だけど、日付については対象が段々移動するという状況もあるからその方がいいのかな。

…そんなわけで、ログ記録の場合も date と time は別フィールドがいいらしい。SQL Server 2008 早く使いたい。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。