ADO MD から ADOMD.NET への移行
更新 : 2005 年 12 月 5 日
ADOMD.NET ライブラリは、ActiveX Data Objects (ADO) ライブラリを機能拡張した ActiveX Data Objects Multidimensional (ADO MD) ライブラリに似ています。このライブラリは、COM (Component Object Model) ベースのクライアント アプリケーションで多次元データへアクセスするときに使用されます。ADO MD を使用すると、C++ や Microsoft Visual Basic などのアンマネージ言語から多次元データへ簡単にアクセスできます。ADOMD.NET では、Microsoft C# や Microsoft Visual Basic .NET などのマネージ言語から、分析データ (多次元データとデータ マイニングの両方) へ簡単にアクセスできます。また、ADOMD.NET は、高度な機能を備えたメタデータ オブジェクト モデルでもあります。
既存のクライアント アプリケーションを ADO MD から ADOMD.NET へ移行するのは容易ですが、移行時には、次の重要な相違点に注意してください。
クライアント アプリケーションによる接続およびデータ アクセス
ADO MD ADOMD.NET Adodb.dll と Adomd.dll を両方とも参照する必要があります。
Microsoft.AnalysisServices.AdomdClient.dll への参照のみが必要です。
AdomdConnection クラスは、メタデータへのアクセスだけでなく、接続のサポートも提供します。
多次元オブジェクトのメタデータの取得
ADO MD ADOMD.NET Catalog クラスを使用します。
AdomdConnection の Cubes プロパティを使用します。
クエリの実行およびセルセット オブジェクトの取得
ADO MD ADOMD.NET CellSet クラスを使用します。
AdomdCommand クラスを使用します。
セルセットの表示で使用するメタデータへのアクセス
ADO MD ADOMD.NET Position クラスを使用します。
メモ : Position クラスは、旧バージョンとの互換性を維持するためにサポートされています。
マイニング モデル メタデータの取得
ADO MD ADOMD.NET 使用できるクラスはありません。
次のいずれかのデータ マイニング コレクションを使用します。
- MiningModelCollection には、データ ソース内のマイニング モデルの一覧が含まれています。
- MiningServiceCollection は、使用可能なマイニング アルゴリズムに関する情報を提供します。
- MiningStructureCollection は、サーバーのマイニング構造に関する情報を示します。
- MiningModelCollection には、データ ソース内のマイニング モデルの一覧が含まれています。
これらの違いをわかりやすく示すため、次の移行例では、既存の ADO MD アプリケーションと同等の ADOMD.NET アプリケーションを比較します。
移行例
この例に示す既存の ADO MD と同等の ADOMD.NET コードは、どちらも同じ一連の操作 (接続の作成、多次元式 (MDX) ステートメントの実行、メタデータとデータの取得) を実行します。ただし、これらの 2 つのコードは、これらのタスクの実行に異なるオブジェクトを使用します。
既存の ADO MD コード
ADO MD 2.8 ドキュメントから抜粋した次のコード例は、Microsoft Visual Basic® 6.0 で記述されており、ADO MD を使用して Microsoft SQL Server 2005 データ ソースへの接続およびクエリを行う方法を示しています。この ADO MD の例では、次のオブジェクトを使用します。
- Catalog オブジェクトから接続を作成します。
- Cellset オブジェクトを使用して多次元式 (MDX) ステートメントを実行します。
- Cellset オブジェクトで取得した Position オブジェクトからメタデータとデータを取得します。
Private Sub cmdCellSettoDebugWindow_Click()
Dim cat As New ADOMD.Catalog
Dim cst As New ADOMD.Cellset
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim strServer As String
Dim strSource As String
Dim strColumnHeader As String
Dim strRowText As String
On Error GoTo Error_cmdCellSettoDebugWindow_Click
Screen.MousePointer = vbHourglass
'*-----------------------------------------------------------------------
'* Set server to local host.
'*-----------------------------------------------------------------------
strServer = "LOCALHOST"
'*-----------------------------------------------------------------------
'* Set MDX query string source.
'*-----------------------------------------------------------------------
strSource = strSource & "SELECT "
strSource = strSource & "{[Measures].members} ON COLUMNS,"
strSource = strSource & _
"NON EMPTY [Store].[Store City].members ON ROWS"
strSource = strSource & " FROM Sales"
'*-----------------------------------------------------------------------
'* Set active connection.
'*-----------------------------------------------------------------------
cat.ActiveConnection = "Data Source=" & strServer & _
";Provider=msolap;"
'*-----------------------------------------------------------------------
'* Set cellset source to MDX query string.
'*-----------------------------------------------------------------------
cst.Source = strSource
'*-----------------------------------------------------------------------
'* Set cellset active connection to current connection
'*-----------------------------------------------------------------------
Set cst.ActiveConnection = cat.ActiveConnection
'*-----------------------------------------------------------------------
'* Open cellset.
'*-----------------------------------------------------------------------
cst.Open
'*-----------------------------------------------------------------------
'* Allow space for row header text.
'*-----------------------------------------------------------------------
strColumnHeader = vbTab & vbTab & vbTab & vbTab & vbTab & vbTab
'*-----------------------------------------------------------------------
'* Loop through column headers.
'*-----------------------------------------------------------------------
For i = 0 To cst.Axes(0).Positions.Count - 1
strColumnHeader = strColumnHeader & _
cst.Axes(0).Positions(i).Members(0).Caption & vbTab & _
vbTab & vbTab & vbTab
Next
Debug.Print vbTab & strColumnHeader & vbCrLf
'*-----------------------------------------------------------------------
'* Loop through row headers and provide data for each row.
'*-----------------------------------------------------------------------
strRowText = ""
For j = 0 To cst.Axes(1).Positions.Count - 1
strRowText = strRowText & _
cst.Axes(1).Positions(j).Members(0).Caption & vbTab & _
vbTab & vbTab & vbTab
For k = 0 To cst.Axes(0).Positions.Count - 1
strRowText = strRowText & cst(k, j).FormattedValue & _
vbTab & vbTab & vbTab & vbTab
Next
Debug.Print strRowText & vbCrLf
strRowText = ""
Next
Screen.MousePointer = vbDefault
Exit Sub
Error_cmdCellSettoDebugWindow_Click:
Beep
Screen.MousePointer = vbDefault
MsgBox "The following error has occurred:" & vbCrLf & _
Err.Description, vbCritical, " Error!"
Exit Sub
End Sub
同等の ADOMD.NET コード
Visual Basic.NET で記述され、ADOMD.NET を使用している次の例は、上記の Visual Basic 6.0 の例と同じ操作の実行方法を示しています。この例と前述の ADO MD の例との大きな違いは、操作のアクションの実行に使用するオブジェクトです。ADOMD.NET の例では、次のオブジェクトを使用します。
- AdomdConnection オブジェクトから接続を作成します。
- AdomdCommand オブジェクトを使用して MDX ステートメントを実行します。
- Cellset オブジェクトで取得した Set オブジェクトからメタデータとデータを取得します。
Private Sub DisplayCellSetInOutputWindow()
Dim conn As AdomdConnection
Dim cmd As AdomdCommand
Dim cst As CellSet
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim strServer As String = "LOCALHOST"
Dim strSource As String = "SELECT [Measures].members ON COLUMNS, " & _
"NON EMPTY [Store].[Store City].members ON ROWS FROM SALES"
Dim strOutput As New System.IO.StringWriter
'*-----------------------------------------------------------------------
'* Open connection.
'*-----------------------------------------------------------------------
Try
' Create a new AdomdConnection object, providing the connection
' string.
conn = New AdomdConnection("Data Source=" & strServer & _
";Provider=msolap;")
' Open the connection.
conn.Open()
Catch ex As Exception
Throw New ApplicationException( _
"An error occurred while connecting.")
End Try
Try
'*-----------------------------------------------------------------------
'* Open cellset.
'*-----------------------------------------------------------------------
' Create a new AdomdCommand object, providing the MDX query string.
cmd = New AdomdCommand(strSource, conn)
' Run the command and return a CellSet object.
cst = cmd.ExecuteCellSet()
'*-----------------------------------------------------------------------
'* Concatenate output.
'*-----------------------------------------------------------------------
' Include spacing to account for row headers.
strOutput.Write(vbTab, 6)
' Iterate through the first axis of the CellSet object and
' retrieve column headers.
For i = 0 To cst.Axes(0).Set.Tuples.Count - 1
strOutput.Write(cst.Axes(0).Set.Tuples(i).Members(0).Caption)
strOutput.Write(vbTab, 4)
Next
strOutput.WriteLine()
' Iterate through the second axis of the CellSet object and
' retrieve row headers and cell data.
For j = 0 To cst.Axes(1).Set.Tuples.Count - 1
' Append the row header.
strOutput.Write(cst.Axes(1).Set.Tuples(j).Members(0).Caption)
strOutput.Write(vbTab, 4)
' Append the cell data for that row.
For k = 0 To cst.Axes(0).Set.Tuples.Count - 1
strOutput.Write(cst.Cells(k, j).FormattedValue)
strOutput.Write(vbTab, 4)
Next
strOutput.WriteLine()
Next
' Display the output.
Debug.WriteLine(strOutput.ToString)
'*-----------------------------------------------------------------------
'* Release resources.
'*-----------------------------------------------------------------------
conn.Close()
Catch ex As Exception
' Ignore or handle errors.
Finally
cst = Nothing
cmd = Nothing
conn = Nothing
End Try
End Sub
参照
概念
ADOMD.NET クライアント オブジェクト アーキテクチャ
ヘルプおよび情報
変更履歴
リリース | 履歴 |
---|---|
2005 年 12 月 5 日 |
|