<< [VS2005]外部ツールの活用 | main | [MSUPD] 2007-12 更新情報 >>

2007/12/12 (水)

[SQL2005AS] ADO.NET と ADOMD.NET

ADO.NET はよく使われるが、ADOMD.NET とは

ADO.NET は言わずとしれた.NETにおけるデータアクセスクラスです。
では、名前の似た ADOMD.NET とはなんでしょう…

おそらく「MD」は多次元式(MDX)から取ったもので、ADOMD.NET はAnalysis Services の多次元データを操作するクラスです。
通常 Analysis Services ではキューブと呼ばれる多次元構造を定義しExcel のピボットテーブルで表示する、
なんていう使い方が一般的な使い方だと思っていました。(あんまり分析論は詳しくないので。)

adomd1_thumb.jpg

しかし、せっかくキューブで階層構造なデータが作れるのにデータとして取得できないと不便なこともあるだろうから
ちゃんと Analysis Services にデータアクセスできるクラスが存在したのです。(SQL Server 2000のときもCOMがあったらしい)

ADO.NET と似たようなもので
 SqlConnection → AdomdConnection
 SqlCommand   → AdomdCommand
といったようになっているので分かり易いといえば分かり易いです。

但し、ADO.NET では コマンドとしてSQLを送信しますが、
ADOMD.NET ではMDX式というコマンドを送信するのですが、これがまた複雑です…

select
    [商品分類1→商品].[商品分類1] ON COLUMNS,
    [売上日_年四半月].[年] ON ROWS
from [売上分析]

 こんなようなSQLもどきを送信すると

adomd2_thumb.jpg

こんな感じで、行や列のラベルに階層が設定されデータが取得できます。
SQL では PIVOT を使ってこういったことも可能ですが、動的な階層があるデータに対しては難しいかもしれないです。

Analysis Services  なかなか手強いです…(分析に関する知識がないのもあるのですが)


【参考】
ADOMD.NET(Analysis Services データアクセスインターフェース)
ADO.NET