次の方法で共有


集計と集計デザイン

適用対象: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

AggregationDesign オブジェクトは、複数のパーティションで共有できる集計定義のセットを定義します。

Aggregation オブジェクトは、メジャー グループ データの概要を、ディメンションの特定の粒度で表します。

簡単な Aggregation オブジェクトは、基本情報およびディメンションで構成されます。 基本情報には、集計の名前、ID、注釈、および説明が含まれます。 ディメンションは、ディメンションの粒度属性の一覧を含む AggregationDimension オブジェクトのコレクションです。

集計とは、事前に計算されたリーフ セル データを要約したものです。 集計により、質問の回答があらかじめ用意されているので、クエリの応答時間を短縮できます。 たとえば、何千行も蓄積されているデータ ウェアハウスのファクト テーブルから特定の製品ラインの週間売上合計を要求するクエリがあるとします。これを計算するために、問い合わせ時にファクト テーブルのすべての行をスキャンして合計していると、応答時間が長くなる場合があります。 ただし、このクエリの回答となる集計データがあらかじめ計算されていれば、即座に応答ができます。 処理中に要約データを事前計算しておくことは、高速な応答時間を実現するための、基本的な OLAP 技術です。

キューブとは、要約データを多次元構造で編成するための OLAP 技術です。 ディメンションとその属性階層構造には、キューブに照会できる内容が反映されています。 集計は、各ディメンションによって指定された座標位置にあるセルに、多次元構造で格納されます。 たとえば、"北西地域 (Northwest) における 1998 年の製品 X の売上は?" という質問には、3 つのディメンション (製品、時間、および地理) と 1 つのメジャー (Sales) が関係します。 この質問では、キューブ内の指定された座標 (製品 X, 1998, Northwest) にあるセルの値が回答 (1 つの数値) になります。

回答が複数の値になる質問もあります。 たとえば、「1998 年の地域別のハードウェア製品の売上は、四半期別にどのくらいでしたか?」このようなクエリは、指定された条件を満たす座標からセルのセットを返します。 返されるセルの数は、製品ディメンションの Hardware レベルに含まれる項目数、1998 年の 4 つの四半期、および地理ディメンションの地域数によって決まります。 ここで、すべての要約データが事前計算され集計として格納されていれば、このクエリの応答時間は、指定されたセルの抽出に必要な時間だけになります。 つまり、データの計算やファクト テーブルからのデータの読み取りは必要ありません。

キューブ内のすべての集計の事前計算は、すべてのクエリで可能な限り最速の応答時間を提供する可能性がありますが、SQL Server Analysis Servicesは、他の事前計算された集計からいくつかの集計値を簡単に計算できます。 これに加えて、可能な集計をすべて計算するには、大量の処理時間とストレージが必要になります。 そのため、必要なストレージと事前計算される集計の割合の間にトレードオフが発生します。 集計を事前計算しない (0%) 場合、キューブに必要な処理時間とストレージ領域は最小限に抑えられます。ただし、各クエリへの応答に必要なデータをリーフ セルから取得してから、各クエリに応答するためにクエリ時に集計しなければならないので、クエリ応答時間は遅くなる可能性があります。 たとえば、前述の質問 ("北西地域における 1998 年の製品 X の売上は?") の場合、回答となる 1 つの数値を返すために、場合によっては何千行ものデータ行を読み取り、それぞれの行から Sales メジャーを求めるための列の値を抽出し、合計を算出しなければなりません。 さらに、そのデータを取得するために必要な時間の長さは、data-MOLAP、HOLAP、または ROLAP に対して選択されたストレージ モードによって非常に異なります。

集計のデザイン

Microsoft SQL Server SQL Server Analysis Servicesには、事前計算用の集計を選択する高度なアルゴリズムが組み込まれているため、事前計算された値から他の集計をすばやく計算できます。 たとえば、時間階層の Month レベルの集計が事前計算されている場合、Quarter レベルの算出に必要なのは 3 つの数値を集計することだけで、これは要求時に即座に計算できます。 この方法では、クエリ応答時間への影響を最小限に抑えながら、処理時間を節約し、必要なストレージを削減できます。

集計のデザイン ウィザードには、このアルゴリズムに対するストレージと集計の割合の制約を指定するためのオプションが用意されています。これらのオプションを使用して、クエリ応答時間と必要なストレージの間のトレードオフを最適化することができます。 ただし、集計のデザイン ウィザードのアルゴリズムでは、すべてのクエリが等しく発生することが前提となっています。 また、使用法に基づく最適化ウィザードでは、クライアント アプリケーションによって送信されたクエリを分析して、メジャー グループの集計デザインを調整できます。 このウィザードを使用することで、キューブに必要なストレージにはほとんど影響を与えずに、使用頻度の低いクエリよりも使用頻度の高いクエリへの応答の方が高速になるように、キューブの集計をチューニングできます。

このウィザードを使用することで集計はデザインされますが、集計デザインの対象であるパーティションが処理されるまで、実際の計算は行われません。 集計の作成後、キューブの構造が変更されたり、キューブの変換元テーブル内でデータの追加または変更が発生した場合、通常はそのキューブの集計を確認し、キューブの処理を再度行う必要があります。

参照

パーティションのストレージ モードおよび処理