ディメンションを使用してメジャーをスライスすると、そのディメンションに含まれる階層に沿ってメジャーが集計されます。 合計動作は、メジャーに指定された集計関数によって異なります。 数値データを含むほとんどのメジャーでは、集計関数は Sum
。 メジャーの値は、階層のどのレベルがアクティブであるかに応じて異なる量に合計されます。
Analysis Services では、作成するすべてのメジャーは、メジャーの操作を決定する集計関数によってサポートされます。 定義済みの集計の種類には、 Sum
、 Min
、 Max
、 Count
、 個別カウント、その他いくつかのより特殊な関数が含まれます。 または、複雑な数式またはカスタム数式に基づく集計が必要な場合は、事前構築済みの集計関数を使用する代わりに MDX 計算を作成できます。 たとえば、パーセンテージ値のメジャーを定義する場合は、計算メジャーを使用して MDX で定義します。
CREATE MEMBER ステートメント (MDX) を参照してください。
キューブ ウィザードを使用して作成されたメジャーには、メジャー定義の一部として集計の種類が割り当てられます。 ソース列に数値データが含まれている場合、集計の種類は常に Sum
されます。
Sum
は、ソース列のデータ型に関係なく割り当てられます。 たとえば、キューブ ウィザードを使用してメジャーを作成し、ファクト テーブルからすべての列を取り込んだ場合、ソースが日付時刻列であっても、結果として得られるすべてのメジャーに Sum
の集計があることがわかります。 ウィザードを使用してメジャーを作成したら、事前に割り当てられた集計方法を常に確認し、集計関数が適切であることを確認してください。
キューブ定義の集計方法は、SQL Server Data Tools - Business Intelligence を使用して、または MDX を使用して割り当てたり変更したりできます。 詳細な手順については、「多次元モデルでのメジャーとメジャー グループの作成」 または 「集計 (MDX)」 を参照してください。
集計関数
Analysis Services には、メジャー グループに含まれるディメンションに沿ってメジャーを集計する関数が用意されています。 集計関数の 加算によって 、キューブ内のすべてのディメンションにわたってメジャーを集計する方法が決まります。 集計関数は、次の 3 つのレベルの追加機能に分類されます。
加法
加法メジャーは完全加法メジャーとも呼ばれ、メジャーを含むメジャー グループに含まれるすべての次元に沿って制限なく集計することができます。
準加法
準加法メジャーは、メジャーを含むメジャー グループに含まれるディメンションの一部 (すべてではない) に沿って集計できます。 たとえば、在庫に使用できる数量を表すメジャーは、地理ディメンションに沿って集計して、すべての倉庫で利用可能な合計数量を生成できますが、メジャーは利用可能な数量の定期的なスナップショットを表しているため、時間ディメンションに沿って集計することはできません。 このようなメジャーを時間ディメンションに沿って集計すると、正しくない結果が生成されます。 詳細については、「 準加法動作の定義」 を参照してください。
非加法
非加法の測度は、その測度を含む測度グループ内のいかなる次元に沿っても集計することができません。 代わりに、メジャーを表すキューブ内の各セルについて、メジャーを個別に計算する必要があります。 たとえば、利益率などのパーセンテージを返す計算メジャーは、どのディメンションの子メンバーの割合値からも集計できません。
次の表に、Analysis Services の集計関数の一覧を示し、関数の追加性と予想される出力の両方について説明します。
集計関数 | 加法 | 戻り値 |
---|---|---|
Sum |
加法 | すべての子メンバーの値の合計を計算します。 これが既定の集計関数です。 |
Count |
加法 | すべての子メンバーの数を取得します。 |
Min |
準加法 | すべての子メンバーの最小値を取得します。 |
Max |
準加法 | すべての子メンバーの最大値を取得します。 |
DistinctCount |
非加法 | ユニークな子メンバーの数を計算します。 詳細については、次のセクションの 「ディスティンクトカウントメジャーについて」を参照してください。 |
None |
非加法 | 集計は実行されません。ディメンション内のリーフ メンバーと非リーフ メンバーのすべての値は、メジャーを含むメジャー グループのファクト テーブルから直接指定されます。 メンバーのファクト テーブルから値を読み取ることができない場合、そのメンバーの値は null に設定されます。 |
ByAccount |
準加法 | 勘定科目ディメンションのメンバーの勘定科目の種類に割り当てられた集計関数に従って集計を計算します。 メジャー グループに勘定科目の種類ディメンションが存在しない場合は、 None 集計関数として扱われます。勘定科目ディメンションの詳細については、「 親子タイプディメンションの財務勘定を作成する」を参照してください。 |
AverageOfChildren |
準加法 | 空でないすべての子メンバーに対する値の平均を計算します。 |
FirstChild |
準加法 | 最初の子メンバーの値を取得します。 |
LastChild |
準加法 | 最後の子メンバーの値を取得します。 |
FirstNonEmpty |
準加法 | 空でない最初の子メンバーの値を取得します。 |
LastNonEmpty |
準加法 | 空でない最後の子メンバーの値を取得します。 |
固有のカウント測定値について
集計関数のプロパティ値が Distinct Count のメジャーは、個別カウント メジャーと呼ばれます。 個別のカウント メジャーを使用して、ファクト テーブル内のディメンションの最下位レベルのメンバーの出現回数をカウントできます。 カウントは異なるため、メンバーが複数回発生した場合は 1 回だけカウントされます。 特定のカウント メジャーは、常に専用のメジャー グループに配置されます。 個別のカウント メジャーを独自のメジャー グループに配置することは、パフォーマンス最適化手法としてデザイナーに組み込まれているベスト プラクティスです。
ユニーク項目数カウントは、ディメンションの各メンバーに対して、ファクトテーブル内で他のディメンションの最下位レベルのメンバーがどれだけの行を共有しているかを判定するために一般的に使用されます。 たとえば、Sales キューブでは、顧客と顧客グループごとに、購入された個別の製品の数はいくつですか? (つまり、Customers ディメンションの各メンバーについて、Products ディメンションの個別の最下位レベルのメンバーがファクト テーブル内の行を共有する数です)。または、たとえば、インターネット サイト訪問キューブでは、サイト訪問者とサイト訪問者グループごとに、インターネット サイト上の個別のページがいくつ訪問されましたか? (つまり、Site Visitors ディメンションの各メンバーについて、Pages ディメンションの個別の最下位レベルのメンバーがファクト テーブル内の行を共有する数です)。これらの各例では、2 番目のディメンションの最下位レベルのメンバーが個別のカウント メジャーによってカウントされます。
この種類の分析は、2 次元に限定する必要はありません。 実際、ユニーク カウント メジャーは、カウントされるメンバーを含むディメンションを含めて、キューブ内の任意のディメンションの組み合わせによって分離およびスライスできます。
メンバーを数える特異なカウントメジャーは、ファクトテーブルの外部キー列に基づいています。 (つまり、メジャーの Source Column プロパティによってこの列が識別されます)。この列は、個別のカウント メジャーによってカウントされるメンバーを識別するディメンション テーブル列を結合します。