メジャーの作成
ここでは、DAX サンプル ブックのデータを基にメジャーを作成する方法について紹介します。このブックには、AdventureWorks データベースの自転車関連のデータが含まれています。サンプル ブックの取得方法の詳細については、「PowerPivot のサンプル データの入手」を参照してください。数式の詳細については、「計算のための数式の作成」を参照してください。
メジャーについて
メジャーとは、PowerPivot データを使用するピボットテーブル (またはピボットグラフ) 専用に作成される数式のことです。COUNT や SUM などの標準の集計関数に基づいてメジャーを作成することも、DAX を使用して独自の数式を定義することもできます。メジャーは、ピボットテーブルの [値] 領域で使用します。計算結果をピボットテーブルの別の領域に配置する場合は、計算列を使用します (「計算列の作成」)。
メジャーの作成時には、メジャーをブック内のテーブルに関連付けます。メジャーの定義は、そのテーブルに保存されます。メジャーは、PowerPivot フィールドの一覧に表示され、ブックのすべてのユーザーが利用できます。
メジャーの作成と編集
メジャーを作成する前に、PowerPivot ブックにピボットテーブルまたはピボットグラフを追加する必要があります。メジャーを追加すると、ピボットテーブルの [値] 領域のセルごとに数式が評価されます。行の見出しと列の見出しの組み合わせごとに結果が作成されるため、メジャーの結果は各セルで異なる場合があります。
PowerPivot ブックにピボットテーブルまたはピボットグラフを追加した後で、[メジャーの設定] ダイアログ ボックスを使用して、数式が格納されているメジャーを追加します。数式では、PowerPivot ウィンドウ内の列とテーブルを使用して、合計、平均などの計算を定義します。標準集計の作成方法は、Excel で作成する場合と同じです。つまり、[値] フィールド領域にフィールドをドラッグしてから、標準集計メソッド (COUNT、SUM、AVERAGE、MIN、MAX) のいずれかを選択します。カスタム集計については、次のセクションで説明します。
作成したメジャーは、複数のピボットテーブルまたはピボットグラフで使用できます。メジャーの名前はブック内で一意でなければならず、既にブックに含まれている列と同じ名前にすることはできません。
例: カスタム集計を使用したメジャーの作成
この例では、新しい DAX 集計関数の一つである SUMX 関数と、ALL 関数を使用したカスタム集計を作成します。ここでは、ALL 関数は列のコンテキストに関係なく、その列のすべての値を返します。例では、DAX サンプル ブック内の次の列を使用します。
DateTime[CalendarYear]
ProductCategory[ProductCategoryName]
ResellerSales_USD[SalesAmount_USD]
例では、行ラベルに CalendarYear、列ラベルに ProductCategoryName を設定したピボットテーブルを使用します。メジャー式には、SalesAmount_USD を使用します。この例では、2001 年から 2004 年の合計売上のうち、各年および各製品カテゴリが占める割合を知ることができます。たとえば、2003 年の自転車の売上が合計売上に占める割合が分かるようになります。これらを確認するには、以下のメジャー式を使用します。
=SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
数式の構成は次のとおりです。
分子 SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]) は、ピボットテーブルの現在のセルに対する ResellerSales_USD[SalesAmount_USD] の値の合計です。CalendarYear および ProductCategoryName のコンテキストがあるため、この値は、年と製品カテゴリの組み合わせによって異なります。たとえば、2003 年の自転車の販売総数は、2004 年のアクセサリの販売総数と異なります。
分母では、最初にテーブル ResellerSales_USD を指定してから、ALL 関数を使用して、テーブルにあるすべてのコンテキストを削除します。これにより、年と製品カテゴリの組み合わせに関係なく、この値は必ず同じになります (分母は常に 2001 年から 2004 年の合計売上になります)。
次に、SUMX 関数を使用して、ResellerSales_USD[SalesAmount_USD] 列の値の合計を計算します。つまり、すべての再販業者の売上の ResellerSales_USD[SalesAmount_USD] の合計が得られます。
注 |
---|
Windows Vista および Windows 7 では、PowerPivot ウィンドウの機能をリボンから実行できます。このトピックではその手順について説明しています。Windows XP では、同じ機能を一連のメニューから実行できます。Windows XP を使用している場合、メニュー コマンドとリボン コマンドの対応については、「Windows XP の PowerPivot UI」を参照してください。 |
カスタム集計を使用したメジャーを作成するには
PowerPivot ウィンドウで [ホーム] タブをクリックし、[レポート] グループにある [ピボットテーブル] をクリックします。
[ピボットテーブルの作成] ダイアログ ボックスで、[新しいワークシート] が選択されていることを確認し、[OK] をクリックします。
PowerPivot によって、新しい Excel ワークシートに空のピボットグラフとピボットテーブルが作成され、ブックの右側に PowerPivot フィールドの一覧が表示されます。
Excel ウィンドウで、[PowerPivot フィールドの一覧] を使用してピボットテーブルに列を追加します。
DateTime テーブルを探し、列 CalendarYear をピボットテーブルの [行ラベル] 領域にドラッグします。
ProductCategory テーブルを探し、列 ProductCategoryName をピボットテーブルの [列ラベル] 領域にドラッグします。
Excel ウィンドウの [PowerPivot] タブの [メジャー] グループで、[新しいメジャー] をクリックします。
[メジャーの設定] ダイアログ ボックスの [テーブル名] の下矢印をクリックし、ボックスの一覧で [ResellerSales_USD] をクリックします。
選択したテーブルによって、メジャーの定義を保存する場所が決まります。必ずしもそのメジャーが参照するテーブルに保存する必要はありません。
[メジャー名 (すべてのピボットテーブル)] に「AllResSalesRatio」と入力します。
この名前はメジャーの識別子として使用されるため、ブック内で一意である必要があり、変更できません。
[カスタム名 (このピボットテーブル)] に「All Reseller Sales Ratio」と入力します。
この名前は、現在のピボットテーブル内での表示にのみ使用されます。たとえば、AllResSalesRatio メジャーを他のピボットテーブルで再利用するときは、短い名前をつけたり、別の言語を使用することもできます。
[式] ボックスで、等号 (=) の後ろにカーソルを置きます。
「SUMX」と入力し、かっこを入力します。
=SUMX(
入力の際、[数式] ボックスの下のツールヒントに、SUMX 関数には 2 つの引数 (最初の引数は、テーブルか、テーブルを返す式。2 番目の引数は、合計できる数値を指定する式) が必要であることが示されます。
「Res」と入力し、一覧から [ResellerSales_USD] を選択して、Tab キーを押します。
列名が次のように数式に挿入されます。
=SUMX(ResellerSales_USD
コンマを入力します。
ツールヒントが更新され、次に必要な引数は expression であることが示されます。この引数には、値、列への参照、またはそれらの組み合わせを指定できます。たとえば、他の 2 つの列を合計する式を作成できます。この例では、各再販業者の売上高を含む列の名前を指定します。
含める列を含むテーブルの名前の最初の数文字を入力します。この例では、「Res」と入力し、一覧から [ResellerSales_USD[SalesAmount_USD]] 列を選択します。
Tab キーを押し、次に示すように列名を数式に挿入し、閉じかっこを追加します。
=SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
スラッシュを入力してから、[メジャーの設定] ダイアログ ボックスに次のコードを入力するか、コピーして貼り付けます。
SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
ALL 関数が SUMX 関数の内部で入れ子になっていることに注意してください。数式全体は、次のようになります。
=SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
[数式の確認] をクリックします。
数式の構文エラーや参照エラーがチェックされます。かっこやコンマの不足などのエラーが検出された場合は修正します。
[OK] をクリックします。
これでこのメジャーによって、カレンダー年度と製品カテゴリのすべての組み合わせの値がピボットテーブルに取り込まれます。
次のようにして、テーブルの書式を設定します。
[総計] 行などのピボットテーブルのデータを選択します。
[ホーム] タブの [数値] グループで、パーセント ボタン ([%]) を 1 回クリックしてから、小数点表示桁上げボタン ([<- .0 .00]) を 2 回クリックします。
できあがったテーブルは次のようになります。製品と年度の各組み合わせについて、売上合計に占める割合が確認できるようになりました。たとえば、2003 年の自転車の売上は、2001 年から 2004 年のすべての売上の 31.71% を占めています。
All Reseller Sales |
列ラベル |
|
|
|
|
行ラベル |
Accessories |
Bikes |
Clothing |
Components |
総計 |
2001 |
0.02% |
9.10% |
0.04% |
0.75% |
9.91% |
2002 |
0.11% |
24.71% |
0.60% |
4.48% |
29.90% |
2003 |
0.36% |
31.71% |
1.07% |
6.79% |
39.93% |
2004 |
0.20% |
16.95% |
0.48% |
2.63% |
20.26% |
総計 |
0.70% |
82.47% |
2.18% |
14.65% |
100.00% |
既存のメジャーの編集
既存のメジャーの定義を表示するには、PowerPivot フィールドの一覧を使用します。[PowerPivot フィールドの一覧] には、現在の PowerPivot ウィンドウ内にあるテーブルの一覧と、生データの列、計算列、定義済みのメジャーが表示されます。任意のメジャーの定義を右クリックして、[式の編集] を選択すると、ダイアログ ボックスが開き、メジャーの定義の表示と変更を行うことができます。
既存のメジャーを表示および変更するには
[Excel] ウィンドウで、ピボットテーブルまたはピボットグラフ内の任意の場所をクリックし、[PowerPivot フィールドの一覧] を表示します。
PowerPivot フィールドの一覧で、作成したメジャーが含まれているテーブルを探します。
それぞれのテーブルに、ベース列、計算列、メジャーを保存できます。メジャーは、メジャー名の右側に小さな計算機のアイコンが表示されます。
この例では、SumAmtByReseller を右クリックし、[式の編集] をクリックします。
[メジャーの設定] ダイアログ ボックスで、数式を編集します。
また、メジャー名またはカスタム名、および関連付けるテーブルを変更することもできます。