新規 : 2005 年 12 月 5 日
Microsoft .NET Framework クラス ライブラリの System.Xml 名前空間に属する XmlReader クラスは、AdomdDataReader クラスと同様、非キャッシュ、順方向専用の高速データ アクセスをサポートしています。CellSet オブジェクトを使用したデータのインメモリ分析ビューが不要であれば、XmlReader オブジェクトは、大量の XML データを取得するのに最も適しています。XmlReader はデータをストリームとして処理するので、データを呼び出し元へ返す前に、すべてのデータを取得してキャッシュに格納する必要がありません。一方、CellSet オブジェクトを使用して XML for Analysis 応答を分析オブジェクト モデルに変換する場合は、事前にすべてのデータをキャッシュに取り込む必要があります。
XmlReader クラスは、AdomdCommand オブジェクトの ExecuteXmlReader メソッドが呼び出されると、ADOMD.NET が受信した XML for Analysis 応答への直接アクセスを提供します。取得するデータは未加工の XML なので、データとメタデータを手動で解析する必要があります。データの取得が完了したら、すぐに XmlReader オブジェクトを閉じてください。
データとメタデータの取得
XmlReader クラスを使用してデータを取得するには、次の手順に従います。
- XmlReader オブジェクトの新しいインスタンスを作成します。
XmlReader クラスの新しいインスタンスを作成するには、AdomdCommand オブジェクトの Execute メソッドまたは ExecuteXmlReader メソッドを呼び出します。 - データを取得します。
コマンドによってクエリが実行され、XmlReader が返された後、データとメタデータを自分で解析する必要があります。XML データおよびメタデータは、XML for Analysis プロバイダで使用されるネイティブ形式で表されます。通常、XML for Analysis プロバイダのネイティブ形式は MDDataSet 形式です。MDDataSet 形式によって、セルセットのデータおよびメタデータの両方が、適切に構成された形式で提供されます。MDDataSet 形式の詳細については、XML for Analysis の仕様書を参照してください。 - XmlReader を閉じます。
XmlReader オブジェクトの使用が終了したら、常に Close メソッドを呼び出す必要があります。XmlReader が開いている間は、その XmlReader によって、コマンドの実行時に使用した AdomdConnection オブジェクトが排他的に使用されます。現在開いている XmlReader を閉じない限り、新しい XmlReader や AdomdDataReader を作成するなど、その AdomdConnection を使用するコマンドは一切実行できません。
XmlReader からのデータ取得例
次の例では、コマンドを実行してデータを XmlReader として取得し、ファイルの内容をコンソールに出力します。
void OutputDataWithXML()
{
//Open a connection to the local server.
AdomdConnection conn = new AdomdConnection("Data Source=localhost");
conn.Open();
//Create a command to retrieve the data.
AdomdCommand cmd = new AdomdCommand(@"WITH MEMBER [Measures].[FreightCostPerOrder] AS
[Measures].[Reseller Freight Cost]/[Measures].[Reseller Order Quantity],
FORMAT_STRING = 'Currency'
SELECT [Geography].[Geography].[Country].&[United States].Children ON ROWS,
[Date].[Calendar].[Calendar Year] ON COLUMNS
FROM [Adventure Works]
WHERE [Measures].[FreightCostPerOrder]", conn);
//Execute the command, retrieving an XmlReader.
System.Xml.XmlReader reader = cmd.ExecuteXmlReader();
//Do something with the reader: Parse data, Parse metadata,
// Save for later loading into CellSet, etc.
Console.WriteLine(reader.ReadOuterXml());
//Close the reader, then the connection
reader.Close();
conn.Close();
//Await user input.
Console.ReadLine();
}
参照
関連項目
分析データ ソースからのデータの取得
セルセットを使用したデータの取得
AdomdDataReader を使用したデータの取得