DecisionCubeを使う

 Decision Cube コンポーネントは Enterprise 版にのみ付属する、多次元解析用のコンポーネントです。これを使うと集計項目のドリルダウンが可能なグリッド、それを元にしたグラフが作成できます。


 まず、サンプルとして以下の単純なテーブルを作りました。商品マスタ、取引先マスタ、売上テーブルです。かなり手抜きです。

商品マスタ (SHOHIN)
HINCD * 商品番号
HINNAME 商品名

取引先マスタ (TORIHIKISAKI)
TORICD * 取引先番号
TORINAME 取引先名

売上テーブル (URIAGE)
URINO * 売上番号
TORICD 取引先番号
HINCD 商品番号
KINGAKU 売上金額

もう見て分かるとおり、売上テーブルと他のマスタは、各マスタのキーフィールドと繋がります。SQLビルダで見るとこんな感じです。

 Decision Cube では必ず GROUP BY でグループ化し、SUMで集計した SQL が必要になります。今回は商品と取引先で GROUP BYして、売上金額を SUMしたいと思います。 SQLは以下のようになります。

■ SQLの例
SELECT
  Torihikisaki.TORINAME,
  Shohin.HINNAME,
  Sum(Uriage.KINGAKU)
FROM
  "SHOHIN.db" Shohin
INNER JOIN
  "URIAGE.db" Uriage
  ON
  (Uriage.HINCD = Shohin.HINCD)
INNER JOIN
  "TORIHIKISAKI.db" Torihikisaki
  ON
  (Uriage.TORICD = Torihikisaki.TORICD)
GROUP BY
  Shohin.HINNAME, Torihikisaki.TORINAME

次に DecisionCubeパレットの各コンポーネントの関係ですが、以下のようになります。

まず DecisionQuery コンポーネントをフォームに置きます。これはその名の通り SQL を記述するためのコンポーネントです。SQLプロパティに先ほどの GROUP BY の SQL を記述します。

次に、残り全部のコンポーネントを配置します。TDecisionGraph、 TDecisionGrid、 TDecisionPivotコンポーネントはビジュアルコンポーネントです。

これで DecisionQueryの Activeプロパティを True にすると、即座に実行され結果が画面に表示されます。

以下が実行結果です。
次元数は今回は二つだけですがこれらはいくらでも増やすことが出来ます。期間別や売上部署別などいろいろな集計要素が考えられます。それからグラフは TeeChartと同じものなのでグラデーション効果や三次元効果もいろいろできます。


上:すべて展開しているところ。取引先別にどの商品がどれぐらい売れたかが分かります。


上:商品を閉じ、取引先ごとに売上金を集計した値を表示。


上:こっちは取引先を閉じて、どの商品がどれだけ売れたかを表示。


上:両方閉じると総合計。

このように、SQL以外 まったくコードを書かずに多次元解析のアプリケーションが作れるのは驚きです。ただ残念なのはデザイン時に結構頻繁にエラーが出ることです。開発時はこまめに保存することをお勧めします。