計算されるメンバーは、キューブ データ、算術演算子、数値、および関数の組み合わせに基づいて定義されるディメンションまたはメジャー グループのメンバーです。 たとえば、キューブ内の 2 つの物理メジャーの合計を計算する計算メンバーを作成できます。 計算されるメンバー定義はキューブに格納されますが、その値はクエリ時に計算されます。
計算されるメンバーを作成するには、キューブ デザイナーの [計算] タブの [ 新しい計算メンバー ] コマンド を 使用します。 メジャー ディメンションを含め、任意のディメンション内に計算メンバーを作成できます。 計算メンバーは、[計算 プロパティ ] ダイアログ ボックスの表示フォルダー内に配置することもできます。 詳細については、「 計算」、「 多次元モデルの計算」、および 「計算されるメンバーの作成」を参照してください。
このトピックのタスクでは、計算メジャーを定義して、ユーザーがインターネット販売、リセラー販売、およびすべての売上の総利益率の割合と売上率を表示できるようにします。
物理的な指標を集計するための計算の定義
Analysis Services チュートリアル キューブのキューブ デザイナーを開き、[ 計算 ] タブをクリックします。
[計算式] ウィンドウと [スクリプト オーガナイザー] ウィンドウの既定の CALCULATE コマンドに注目してください。 このコマンドは、キューブ内のメジャーが AggregateFunction プロパティで指定された値に従って集計されるように指定します。 メジャー値は一般的に合計されますが、他の方法でカウントまたは集計することもできます。
次の図は、キューブ デザイナーの [ 計算 ] タブを示しています。
[ 計算 ]タブのツールバーで、[ 新しい計算メンバー]をクリックします。
この新しい計算メンバーのプロパティを定義する新しいフォームが [計算式 ] ペインに表示されます。 新しいメンバーは、[ スクリプト オーガナイザー ] ウィンドウにも表示されます。
次の図は、[ 計算 式] ウィンドウで [ 新しい計算されるメンバー] をクリックしたときに表示されるフォームを示しています。
[ 名前 ] ボックスで、計算メジャーの名前を
[Total Sales Amount]
に変更します。計算されるメンバーの名前にスペースが含まれている場合、計算されるメンバー名は角かっこで囲む必要があります。
親階層の一覧では、既定ではメジャー ディメンションに新しい計算メンバーが作成されていることに注意してください。 メジャー ディメンションの計算メンバーは、計算メジャーとも呼ばれます。
[計算] タブの [計算ツール] ウィンドウの [メタデータ] タブで、[メジャー] を展開し、[Internet Sales] を展開して、Internet Sales メジャー グループのメタデータを表示します。
[ 計算ツール] ウィンドウから [ 式 ] ボックスにメタデータ要素をドラッグし、演算子やその他の要素を追加して多次元式 (MDX) 式を作成できます。 または、[ 式] ボックス に MDX 式を直接入力することもできます。
注
[計算ツール] ウィンドウでメタデータを表示できない場合は、ツール バーの [再接続] をクリックします。 これが機能しない場合は、キューブを処理するか、Analysis Services のインスタンスを開始する必要があります。
計算ツール ウィンドウの メタデータ タブから インターネット Sales-Sales 量 を 計算式 ウィンドウの 式 ボックスにドラッグします。
[式] ボックスに、[Measures].[インターネット Sales-Sales 金額]の後にプラス記号 (
+
) を入力します。[計算ツール] ウィンドウの [メタデータ] タブで、[Reseller Sales] を展開し、プラス記号 (+) の後の [計算式] ウィンドウの [式] ボックスに Reseller Sales-Sales Amount をドラッグします。
[ 書式] 文字列 の一覧で、[通貨] を選択します 。
[空でない動作] ボックスの一覧で、[インターネット Sales-Sales 金額] と [リセラー Sales-Sales 金額] のチェック ボックスをオンにし、[OK] をクリックします。
非空の動作リストで指定したメジャーは、MDXのNON EMPTYクエリを解決するために使用されます。 空でない動作リストで 1 つ以上のメジャーを指定すると、指定されたすべてのメジャーが空の場合、Analysis Services は計算されるメンバーを空として扱います。 空でない動作プロパティが空白の場合、Analysis Services は計算されるメンバー自体を評価して、メンバーが空かどうかを判断する必要があります。
次の図は、前の手順で指定した設定が入力された [ 計算式 ] ペインを示しています。
[ 計算 ] タブのツール バーで、[ スクリプト ビュー] をクリックし、[計算式] ウィンドウで計算スクリプト を 確認します。
新しい計算が最初の CALCULATE 式に追加されていることに注意してください。個々の計算はセミコロンで区切られます。 計算スクリプトの先頭にコメントが表示されていることにも注意してください。 計算のグループに対して計算スクリプト内にコメントを追加することをお勧めします。これは、複雑な計算スクリプトを理解するのに役立ちます。
Calculate; コマンドの後、および新しく追加された計算スクリプトの前に、計算スクリプトに新しい行を追加し、次のテキストをスクリプトに独自の行で追加します。
/* Calculations to aggregate Internet Sales and Reseller Sales measures */
次の図は、チュートリアルのこの時点の [計算式 ] ペインに表示される計算スクリプトを示しています。
[計算] タブのツール バーで、[フォーム ビュー] をクリックし、[スクリプト オーガナイザー] ウィンドウで
[Total Sales Amount]
が選択されていることを確認し、[新しい計算メンバー] をクリックします。この新しい計算されるメンバーの名前を
[Total Product Cost]
に変更し、[ 式 ] ボックスに次の式を作成します。[Measures].[Internet Sales-Total Product Cost] + [Measures].[Reseller Sales-Total Product Cost]
[ 書式文字列 ] ボックスの一覧で [ 通貨] を選択します。
「空でない動作」リストで、「Internet Sales-Total Product Cost」と「Reseller Sales-Total Product Cost」のチェックボックスをオンにし、「OK」をクリックします。
これで、計算される 2 つのメンバーが定義されました。どちらも [スクリプト オーガナイザー ] ウィンドウに表示されます。 これらの計算されるメンバーは、計算スクリプトで後で定義する他の計算で使用できます。 [ スクリプト オーガナイザー ] ウィンドウで計算されるメンバーを選択すると、計算されるメンバーの定義を表示できます。計算されるメンバーの定義は、フォーム ビューの [計算式 ] ウィンドウに表示されます。 新しく定義された計算メンバーは、これらのオブジェクトが配置されるまで 、[計算ツール ] ウィンドウには表示されません。 計算には処理は必要ありません。
粗利益率計算の定義
[スクリプト オーガナイザー] ウィンドウで
[Total Product Cost]
が選択されていることを確認し、[計算] タブのツール バーの [新しい計算メンバー] をクリックします。[ 名前 ] ボックスで、この新しい計算メジャーの名前を
[Internet GPM]
に変更します。[ 式 ] ボックスで、次の MDX 式を作成します。
([Measures].[Internet Sales-Sales Amount] - [Measures].[Internet Sales-Total Product Cost]) / [Measures].[Internet Sales-Sales Amount]
[ 文字列の書式設定 ] ボックスの一覧で、[ パーセント] を選択します。
[ 空でない動作 ] ボックスの一覧で、[ インターネット Sales-Sales 量] のチェック ボックスをオンにし、[ OK] をクリックします。
[ 計算 ]タブのツールバーで、[ 新しい計算メンバー]をクリックします。
[ 名前 ] ボックスで、この新しい計算メジャーの名前を
[Reseller GPM]
に変更します。[ 式 ] ボックスで、次の MDX 式を作成します。
([Measures].[Reseller Sales-Sales Amount] - [Measures].[Reseller Sales-Total Product Cost]) / [Measures].[Reseller Sales-Sales Amount]
[ 文字列の書式設定 ] ボックスの一覧で、[ パーセント] を選択します。
[空でない動作] リストで、[Reseller Sales-Sales Amount] のチェック ボックスをオンにし、[OK] をクリックします。
[ 計算 ]タブのツールバーで、[ 新しい計算メンバー]をクリックします。
[ 名前 ] ボックスで、この計算メジャーの名前を
[Total GPM]
に変更します。[ 式 ] ボックスで、次の MDX 式を作成します。
([Measures].[Total Sales Amount] - [Measures].[Total Product Cost]) / [Measures].[Total Sales Amount]
この計算されるメンバーが他の計算メンバーを参照していることに注意してください。 この計算されるメンバーは、参照する計算メンバーの後に計算されるため、これは有効な計算メンバーです。
[ 文字列の書式設定 ] ボックスの一覧で、[ パーセント] を選択します。
[空でない動作] リストで、[インターネット Sales-Sales 金額] と [リセラー Sales-Sales 金額] のチェックボックスを選択し、[OK] をクリックします。
[ 計算 ] タブのツール バーで、[ スクリプト ビュー ] をクリックし、計算スクリプトに追加した 3 つの計算を確認します。
[Internet GPM]
計算の直前に計算スクリプトに新しい行を追加し、スクリプトに次のテキストを独自の行で追加します。/* Calculations to calculate gross profit margin */
次の図は、3 つの新しい計算を含む [式 ] ペインを示しています。
合計計算の割合の定義
[ 計算 ] タブのツール バーで、[ フォーム ビュー] をクリックします。
[スクリプト オーガナイザー] ウィンドウで
[Total GPM]
を選択し、[計算] タブのツール バーの [新しい計算メンバー] をクリックします。[ スクリプト オーガナイザー ] ウィンドウで最終的な計算メンバーをクリックしてから、[ 新しい計算メンバー ] をクリックすると、新しい計算メンバーがスクリプトの最後に追加されます。 スクリプトは、[スクリプト オーガナイザー ] ウィンドウに表示される順序で実行されます。
この新しい計算されるメンバーの名前を
[Internet Sales Ratio to All Products]
に変更します。[式] ボックスに次の 式 を入力します。
Case When IsEmpty( [Measures].[Internet Sales-Sales Amount] ) Then 0 Else ( [Product].[Product Categories].CurrentMember, [Measures].[Internet Sales-Sales Amount]) / ( [Product].[Product Categories].[(All)].[All], [Measures].[Internet Sales-Sales Amount] ) End
この MDX 式は、各製品の合計インターネット売上への貢献度を計算します。 Case ステートメントと IS EMPTY 関数を組み合わせることで、製品に売上がない場合にゼロ除算エラーが発生しないようにします。
[ 文字列の書式設定 ] ボックスの一覧で、[ パーセント] を選択します。
[ 空でない動作 ] ボックスの一覧で、[ インターネット Sales-Sales 量] のチェック ボックスをオンにし、[ OK] をクリックします。
[ 計算 ]タブのツールバーで、[ 新しい計算メンバー]をクリックします。
この計算されるメンバーの名前を
[Reseller Sales Ratio to All Products]
に変更します。[式] ボックスに次の 式 を入力します。
Case When IsEmpty( [Measures].[Reseller Sales-Sales Amount] ) Then 0 Else ( [Product].[Product Categories].CurrentMember, [Measures].[Reseller Sales-Sales Amount]) / ( [Product].[Product Categories].[(All)].[All], [Measures].[Reseller Sales-Sales Amount] ) End
[ 文字列の書式設定 ] ボックスの一覧で、[ パーセント] を選択します。
[非空の動作] リストで、[Reseller Sales-Sales Amount] のチェックボックスを選択し、[OK]をクリックします。
[ 計算 ]タブのツールバーで、[ 新しい計算メンバー]をクリックします。
この計算されるメンバーの名前を
[Total Sales Ratio to All Products]
に変更します。[式] ボックスに次の 式 を入力します。
Case When IsEmpty( [Measures].[Total Sales Amount] ) Then 0 Else ( [Product].[Product Categories].CurrentMember, [Measures].[Total Sales Amount]) / ( [Product].[Product Categories].[(All)].[All], [Measures].[Total Sales Amount] ) End
[ 文字列の書式設定 ] ボックスの一覧で、[ パーセント] を選択します。
[ 空でない動作 ] ボックスの一覧で、[ インターネット Sales-Sales 金額 ] と [ リセラーの Sales-Sales 金額] のチェック ボックスをオンにして、[ OK ] をクリックします。
[ 計算 ] タブのツール バーで、[ スクリプト ビュー] をクリックし、計算スクリプトに追加した 3 つの計算を確認します。
[Internet Sales Ratio to All Products]
計算の直前に計算スクリプトに新しい行を追加し、スクリプトに次のテキストを独自の行で追加します。/* Calculations to calculate percentage of product to total product sales */
これで、合計 8 つの計算メンバーが定義されました。このメンバーは、フォーム ビューの場合に [ スクリプト オーガナイザー ] ウィンドウに表示されます。
新しい集計メンバーの閲覧
SQL Server Data Tools (SSDT) の [ビルド ] メニューで、[ Analysis Services チュートリアルの展開] をクリックします。
デプロイが正常に完了したら、[ ブラウザー ] タブに切り替え、[ 再接続] をクリックします。
Excel アイコンをクリックし、[ 有効] をクリックします。
[ ピボットテーブル フィールド リスト ] ウィンドウで、[ 値 ] フォルダーを展開して、メジャー ディメンションの新しい計算メンバーを表示します。
[合計売上金額] を [値] 領域にドラッグし、結果を確認します。
Internet Sales-Sales Amount および Reseller Sales-Sales Amountのメジャーを Internet Sales メジャー グループと Reseller Sales メジャー グループから値領域にドラッグします。
Total Sales Amount メジャーは、インターネット Sales-Sales Amount メジャーと Reseller Sales-Sales Amount メジャーの合計であることに注意してください。
ユーザー定義の 製品カテゴリ 階層を レポート フィルター領域のフィルター領域に追加し、 Mountain Bikes でデータをフィルター処理します。
合計売上金額のメジャーは、インターネットSales-Sales 金額およびリセラーSales-Sales 金額メジャーに基づいて、製品売上のマウンテン バイクカテゴリに対して計算されます。
Date.Calendar 日付のユーザー定義階層を行ラベル領域に追加し、結果を確認します。
各暦年の合計売上金額メジャーは、マウンテン バイクの製品売上カテゴリに対して、インターネットSales-Sales 金額メジャーとリセラー Sales-Sales 金額メジャーに基づいて計算されます。
Total GPM メジャー、Internet GPM メジャー、Reseller GPM メジャーを [値] 領域に追加し、結果を確認します。
次の図に示すように、リセラー売上の総利益率は、インターネット経由の売上よりも大幅に低くなっています。
[すべての製品に対する総売上率]、[すべての製品に対するインターネット販売率]、[すべての製品に対するリセラー売上率] メジャーを [値] 領域に追加します。
すべての製品に対するマウンテンバイクの売上の比率は、インターネット販売の時間の経過と同時に増加していますが、リセラーの販売では時間の経過と伴って減少していることに注意してください。 また、すべての製品に対するマウンテンバイクの販売比率は、インターネット経由での販売よりもリセラーを通じた販売の方が低いことがわかります。
フィルターを Mountain Bikes から Bikes に変更し、結果を確認します。
ツアーバイクとロードバイクは損失で販売されているため、再販業者を通じて販売されるすべての自転車の粗利益はマイナスであることに注意してください。
フィルターを [アクセサリ] に変更し、結果を確認します。
アクセサリの販売は時間の経過とともに増加していますが、これらの売上は総売上のごく一部に過ぎません。 また、アクセサリーの売上総利益率が自転車よりも高いことがわかります。