| Xcuteで作るクロス集計(ROLAP) |
| メニュー |
|
|
|
|
|
|
|
Excelのピボット |
|
XCuteのクロス |
|
XCuteのクロスの高速版 |
|
ダウンロード(BI.zip) |
|
マニュアルへ |
|
|
|
| 目次) |
|
|
|
|
|
|
|
戻る |
|
概要 |
|
1 元データ(ファクト表)から分析表を作る |
|
2 分析表からExcelのピボットテーブルを作る |
|
3 分析表からXcuteでクロス集計表を作る(Crossレポート) |
|
4 Crossレポートの高速化(CrossNoCopyレポート) |
|
まとめ |
|
|
|
|
|
|
|
|
|
| 概要) |
Top↑ |
|
本稿の主題は、クロス集計やOLAP(Online
Analytical
Processing)であり、ここでは多次元データベースを使う本格的なOLAP(MOLAP)ではなく、SQL文を使ったリレーショナルOLAP(ROLAP)の構築を実例をもとに解説します。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 元データ(ファクト表)から分析表を作る |
Top↑ |
|
本稿では、データベースに添付のAccessの
db.mdb(図1) をつかう。下記のように、明細と商品マスターと社員マスターの3つの表があります。明細テーブル(図2)は、ファクト表と呼ばれ、マスター表はディメンション表とも呼ばれます。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
この明細テーブルを商品マスターや社員マスターと結合する。(図3) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
この結合されたQ明細表(図4)は、分析の元となる表で、図5のように、時間軸、商品軸、担当者軸を持ち、多次元データベースなどとも言われる。ここでは、この表を分析表と呼ぼう。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 分析表からExcelのピボットテーブルを作る |
Top↑ |
|
「外部データの取り込み」の「データの取り込み」を選び(図6) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Accessのdb、mdbファイルを選択(図7) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
分析データのビュー(Q明細)を選択(図8) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ピボットテーブルレポートの作成を選ぶ(図9) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
完了を選ぶ(図10) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
空のピボットテーブルが作られる(図11) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ピボットテーブルにフィールドをドラッグアンドドロップして完成させる(図12)
横軸は時間軸の月で、縦軸は担当者軸で、支店と担当で階層化されている。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
注意:データベースを読み取り専用に設定(図13) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
注: |
Mode=Share Deny Write ではXcuteなどがアクセスできなくなります。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Excelのピボットテーブルは、簡単で強力だ。図14は、縦軸を担当者から商品へ換えたものだ。グラフも簡単に作れる。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
また、下記の図15のようにSQL文の指定できる。SQL文をマクロで発行すれば、Xcuteと同じようにかなりのことができる。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
実際に外部データの取り込み使ったXcuteのサンプルはここの「Ver9のサンプル」を見てください。 |
|
|
|
|
|
|
|
|
|
| 3 分析表からXcuteでクロス集計表を作る(Crossレポート) |
Top↑ |
|
Xcuteで作るクロス集計表の例として図12と同じ下記の図16を作ろう。縦軸を支店名で階層化し、横軸は月である。テーブルは、図12で使った分析表を使う。レポート名はCrossである。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Crossレポートは、テーブルは親子で、ひな型の設定のテーブル1レコードの読取範囲は、下記の赤点線で示すように箱の中に箱がある入れ子である。テーブルも親子で、図19に示すように、読取範囲と同じように、入れ子でインデントして示めされる。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Cross集計は、図20のSQL文で、月,支社名,氏名でGroup
By
して金額のSumを取っている。このSQL文のビューが図19で、支社名と氏名でソートしている。図19で氏名が「博多 太郎」の月月のレコードが図17の赤点線の読取範囲に書き出される。キーが割れ、氏名が「博多 次郎」に移動する。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
上記の説明は、XCuteのマニュアルの「XCuteのDB連動機能」の「レポートとひな型」でも詳しく解説されているので、見ておいてほしい。 |
|
|
|
|
|
|
|
|
|
| 4 Crossレポートの高速化(CrossNoCopyレポート) |
Top↑ |
|
Crossレポートの高速化して、CrossNoCopyレポートを作成しよう。Xcuteの原則は、「テーブル1レコードの読書き範囲を適宜コピーしてレポートを作成する」ことです。しかし、子テーブルのひな型の設定が「行コピーせず」になっていないと、行コピーの回数が増えて高速にWriteReportはできません。
高速化図るため、CrossNoCopyレポートでは、子テーブルに限らず親テーブルまで、「行コピーせず」を設定し、下記の図21のひな型シート使う。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CrossNoCopyレポートでWriteReportしたのが、下記の図24である。このレポートは、Excelのアウトラインが設定され、一部の行を隠すこともできる。なお、Excelでは集計行を子レコードの下あるいは上に位置させることができるが、上の方がアウトラインを使った時にコンパクトに表示される。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| まとめ) |
Top↑ |
|
1)ファクト表とマスターテーブルをSQLで結合して、ピボットの元となる分析表を作る。 |
|
2)分析表をから、ピボットテーブルを作る。 |
|
3)分析表をから、Xcuteで集計クエリーを使い、親子にしてクロス集計表を作る。 |
|
親子と階層化するには、下記のように、ひな型もテーブルも箱の中に箱を作る入れ子とする。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Excelのピボットテーブルは簡単で便利ですが、実務では支店名や担当者の表示順(序列)が大事な場合も多く、そのような時にはXcuteのクロス集計表をつかうことになる。 |
|
いづれを使うにせよ、ファクト表から分析表を作るなどSQL文の操作が肝要で、不慣れな方は、
「一晩で学ぶSQL」Ben Forta著インプレス社発行 がお勧めです。 |
|
|
|
|
|
|
|
|
Top↑ |
|
|
|
|
|
|
|
|
|