データの集約

意思決定支援システム用にトランザクション データの集計をまとめたレポートを作成するために、複雑でリソースも多く使用する処理を行う必要が生じることがあります。SQL Server のデータの多次元分析には、次の 2 つのコンポーネントを主に使用します。

  • SQL Server Integration Services

    Integration Services は、トランザクション データの抽出、およびデータ ウェアハウスやデータ マートの集計サマリへのデータの変換をサポートします。詳細については、「概要 (Integration Services)」を参照してください。

  • SQL Server Analysis Services

    Analysis Services では、データ ウェアハウスのデータを、事前計算済みの集約情報を含む多次元キューブ形式データとして編成します。この集約情報は、複雑な分析クエリへの回答をすばやく得るために使用されます。PivotTable® Service では、クライアントは多次元データにアクセスできます。また Analysis Services では、分析処理で使用される多次元構造を定義する一連のウィザードや、分析構造の管理に使用する Microsoft 管理コンソール スナップインも提供されます。アプリケーションは、API のセットを使用して、分析データを分析します。詳細については、「Business Intelligence Development Studio を使用した開発と実装」を参照してください。

Transact-SQL を使用した単純な集計レポートの作成

アプリケーションでは、次の Transact-SQL 要素を使用して単純な集計レポートを生成できます。

  • ROLLUP、CUBE、または GROUPING SETS 演算子。これらは、SELECT ステートメントの GROUP BY 句の拡張機能です。詳細については、「GROUP BY (Transact-SQL)」を参照してください。

  • COMPUTE 句または COMPUTE BY 演算子。これらも、GROUP BY に関連付けられます。詳細については、「COMPUTE および COMPUTE BY を使用したデータの集約」を参照してください。

上記の各演算子は、各項目に対応する詳細行、およびグループごとの集計サマリ (まとめ) 行を含む結果セットを生成します。GROUP BY 句を使用すると、詳細行なしで、各グループの集計サマリだけを結果セットとして生成できます。

アプリケーションでは、CUBE、ROLLUP、COMPUTE、または COMPUTE BY の代わりに Analysis Services を使用することをお勧めします。CUBE 演算子と ROLLUP 演算子は、OLE DB や ADO にアクセスしないスクリプトやストアド プロシージャなどの環境用に予約しておきます。

COMPUTE と COMPUTE BY は、旧バージョンとの互換性を確保するためにサポートされています。ROLLUP 演算子は、COMPUTE または COMPUTE BY のいずれかに対して実行されます。COMPUTE または COMPUTE BY によって生成されたサマリ値は、各グループの詳細行を返す結果セットを間に挟んだ複数の結果セット、または主結果セットの後に総計を付加した単一の結果セットとして返されます。このような複数の結果セットを処理することで、アプリケーション コードの複雑さの度合いも高まります。COMPUTE も COMPUTE BY もサーバー カーソルではサポートされていません。ただし、ROLLUP はサーバー カーソルでサポートされています。CUBE 演算子と ROLLUP 演算子は、小計行や総計行を埋め込んだ単一の結果セットを生成します。クエリ オプティマイザでは、COMPUTE および COMPUTE BY で生成可能なものに比べてより効率的な実行プランを ROLLUP で生成できる場合もあります。

上記の各演算子を指定しないで GROUP BY 句を使用すると、グループで集計された小計をそれぞれ 1 行ずつにまとめた単一の結果セットが返されます。この結果セットには、詳細行は含まれません。

関連項目

その他の技術情報