計算されるメンバの定義

計算されるメンバとは、キューブ データ、算術演算子、数値、関数を組み合わせて定義した、ディメンション グループまたはメジャー グループのメンバです。たとえば、キューブ内の 2 つの物理的なメジャーの合計を計算する、計算されるメンバを作成できます。計算されるメンバの定義はキューブ内に保存されますが、その値はクエリ時に計算されます。

計算されるメンバを作成するには、キューブ デザイナの [計算] タブで [新しい計算されるメンバ] コマンドを使用します。計算されるメンバは、メジャー ディメンションなどの任意のディメンション内に作成できます。[計算プロパティ] ダイアログ ボックスを使用して、計算されるメンバを表示フォルダ内に配置することもできます。詳細については、「計算」、「計算の定義と構成」、および「計算されるメンバの定義」を参照してください。

このトピックの作業では、計算されるメジャーを定義し、インターネット販売、再販業者による販売、およびすべての販売について、売上総利益率と売上比率を表示できるようにします。

物理メジャーを集計する計算の定義

物理メジャーを集計する計算を定義するには

  1. Analysis Services Tutorial キューブのキューブ デザイナを開き、[計算] タブをクリックします。

    計算式ペインと [スクリプト オーガナイザ] ペインには、既定で CALCULATE コマンドが表示されています。このコマンドは、AggregateFunction プロパティで指定されている値に基づいて、キューブ内のメジャーを集計するように指定します。通常、メジャー値は合計されますが、他の方法でカウントまたは集計することも可能です。

    次の図は、キューブ デザイナの [計算] タブを示しています。

    キューブ デザイナの [計算] タブ

  2. [計算] タブで、ツール バーの [新しい計算されるメンバ] をクリックします。

    計算式ペインに新しいフォームが表示されます。このフォームで、この新しい計算されるメンバのプロパティを定義します。新しいメンバは [スクリプト オーガナイザ] ペインにも表示されます。

    次の図は、[新しい計算されるメンバ] をクリックしたとき、計算式ペインに表示されるフォームを示しています。

    計算式ペイン フォーム

  3. [名前] ボックスに、計算されるメジャーの名前として「[Total Sales Amount]」と入力します。

    計算されるメンバの名前に空白文字が含まれる場合は、その名前全体を角かっこで囲む必要があります。

    [親階層] ボックスを見るとわかるように、既定では、新しい計算されるメンバは Measures ディメンションに作成されます。Measures ディメンションの計算されるメンバは、多くの場合、計算されるメジャーと呼ばれます。

  4. [計算] タブの [計算ツール] ペインで [メタデータ] タブをクリックし、[Measures][Internet Sales] の順に展開します。Internet Sales メジャー グループのメタデータが表示されます。

    メタデータ要素を [計算ツール] ペインから [式] ボックスにドラッグし、さらに演算子と他の要素を追加して、多次元式 (MDX) を作成します。[式] ボックスには、MDX 式を直接入力することもできます。

ms166568.note(ja-jp,SQL.90).gifメモ :
[計算ツール] ペインにメタデータが表示されない場合、ツール バーの [再接続] をクリックします。それでも表示されない場合は、キューブを処理するか、Analysis Services のインスタンスを開始する必要があります。
  1. [計算ツール] ペインの [メタデータ] タブで [Internet Sales-Sales Amount] をクリックし、計算式ペインの [式] ボックスまでドラッグします。

  2. [式] ボックスで、[Measures].[Internet Sales-Sales Amount] の後ろにプラス符号 (+) を入力します。

  3. [計算ツール] ペインの [メタデータ] タブで [Reseller Sales] を展開します。次に、[Reseller Sales-Sales Amount] を、計算式ペインの [式] ボックスにあるプラス符号 (+) の後ろにドラッグします。

  4. [書式設定文字列] ボックスの一覧で ["Currency"] をクリックします。

  5. [空以外の動作] ボックスの一覧で、Internet Sales-Sales AmountReseller Sales-Sales Amount のチェック ボックスをオンにして、[OK] をクリックします。
    [空以外の動作] ボックスで指定したメジャーは、MDX の NON EMPTY クエリを解決するために使用されます。[空以外の動作] ボックスで 1 つ以上のメジャーを指定すると、指定したメジャーがすべて空である場合に、計算されるメンバが空として処理されます。[空以外の動作] プロパティを空白にした場合は、計算されるメンバ自体が評価され、空メンバであるかどうかが判断されます。
    次の図は、上記の手順で指定した設定が入力された計算式ペインを示しています。

    値が設定された計算式ペイン

  6. [計算] タブのツール バーにある [スクリプト ビュー] をクリックし、計算式ペインで計算スクリプトを確認します。
    新しい計算が最初の CALCULATE 式に追加されているはずです。個々の計算はセミコロンで区切られています。計算スクリプトの冒頭には、コメントが挿入されています。計算スクリプト内で計算のグループごとにコメントを追加すると、開発者が複雑な計算スクリプトを理解するのに役立ちます。

  7. 計算スクリプトで、Calculate; コマンドの後、新しく追加された計算スクリプトの前に新しい行を追加し、その行に以下のテキストを独自の行として追加します。

    /* Calculations to aggregate Internet Sales and Reseller Sales measures */
    

    次の図は、チュートリアルのこの時点で計算式ペインに表示される計算スクリプトを示しています。

    計算式ペインのスクリプト

  8. [計算] タブのツール バーにある [フォーム ビュー] をクリックし、[スクリプト オーガナイザ] ペインで [Total Sales Amount] が選択されていることを確認して、[新しい計算されるメンバ] をクリックします。

  9. この新しく計算されるメンバの名前を「[Total Product Cost]」に変更します。次に、[式] ボックスで以下の式を作成します。

    [Measures].[Internet Sales-Total Product Cost] + [Measures].[Reseller Sales-Total Product Cost]
    
  10. [書式設定文字列] ボックスの一覧の ["Currency"] をクリックします。

  11. [空以外の動作] ボックスの一覧で、Internet Sales-Total Product CostReseller Sales-Total Product Cost のチェック ボックスをオンにして、[OK] をクリックします。
    これで 2 つの計算されるメンバが定義され、どちらも [スクリプト オーガナイザ] ペインに表示されます。これらの計算されるメンバは、計算スクリプト内で後に定義する他の計算で使用することができます。[スクリプト オーガナイザ] ペインでいずれかの計算されるメンバを選択すると、その計算されるメンバの定義を表示できます。計算されるメンバの定義は、フォーム ビューの計算式ペインに表示されます。新しく定義した計算されるメンバは、配置されるまでは [計算ツール] ペインに表示されません。計算は処理を必要としません。

売上総利益率の計算の定義

売上総利益率の計算を定義するには

  1. 「スクリプト オーガナイザ] ペインで [Total Product Cost] が選択されていることを確認し、[計算] タブのツール バーにある [新しい計算されるメンバ] をクリックします。

  2. [名前] ボックスに、この新しい計算されるメジャーの名前として「[Internet GPM]」と入力します。

  3. [式] ボックスで、以下の MDX 式を作成します。

    ([Measures].[Internet Sales-Sales Amount] - 
    [Measures].[Internet Sales-Total Product Cost]) /
    [Measures].[Internet Sales-Sales Amount]
    
  4. [書式設定文字列] ボックスの一覧で ["Percent"] をクリックします。

  5. [空以外の動作] ボックスの一覧で、Internet Sales-Sales Amount のチェック ボックスをオンにして、[OK] をクリックします。

  6. [計算] タブのツール バーで、[新しい計算されるメンバ] をクリックします。

  7. [名前] ボックスに、この新しい計算されるメジャーの名前として「[Reseller GPM]」と入力します。

  8. [式] ボックスで、以下の MDX 式を作成します。

    ([Measures].[Reseller Sales-Sales Amount] - 
    [Measures].[Reseller Sales-Total Product Cost]) /
    [Measures].[Reseller Sales-Sales Amount]
    
  9. [書式設定文字列] ボックスの一覧で ["Percent"] をクリックします。

  10. [空以外の動作] ボックスの一覧で、Reseller Sales-Sales Amount のチェック ボックスをオンにして、[OK] をクリックします。

  11. [計算] タブのツール バーで、[新しい計算されるメンバ] をクリックします。

  12. [名前] ボックスに、この新しい計算されるメジャーの名前として「[Total GPM]」と入力します。

  13. [式] ボックスで、以下の MDX 式を作成します。

    ([Measures].[Total Sales Amount] - 
    [Measures].[Total Product Cost]) /
    [Measures].[Total Sales Amount]
    

    この計算されるメンバは、他の計算されるメンバを参照しています。この計算されるメンバは、参照している計算されるメンバの後に計算されるため、有効な計算されるメンバになります。

  14. [書式設定文字列] ボックスの一覧で ["Percent"] をクリックします。

  15. [空以外の動作] ボックスの一覧で、Internet Sales-Sales AmountReseller Sales-Sales Amount のチェック ボックスをオンにして、[OK] をクリックします。

  16. [計算] タブのツール バーで [スクリプト ビュー] をクリックし、計算スクリプトに追加した 3 つの計算を確認します。

  17. 計算スクリプトの [Internet GPM] の計算の直前に新しい行を追加して、その行に以下のテキストを独自の行として追加します。

    /* Calculations to calculate gross profit margin */
    

    次の図は、新しい 3 つの計算が表示されている計算式ペインを示しています。

    計算式ペインでの新しい計算

全体に対する比率の計算の定義

全体に対する比率の計算を定義するには

  1. [計算] タブのツール バーで、[フォーム ビュー] をクリックします。

  2. [スクリプト オーガナイザ] ペインで [Total GPM] をクリックし、[計算] タブのツール バーにある [新しい計算されるメンバ] をクリックします。

    [スクリプト オーガナイザ] ペインで最後の計算されるメンバをクリックしてから [新しい計算されるメンバ] をクリックすると、新しい計算されるメンバがスクリプトの末尾に挿入されます。スクリプトは、[スクリプト オーガナイザ] ペインに表示される順序で実行されます。

  3. この新しい計算されるメンバの名前を「[Internet Sales Ratio to All Products]」に変更します。

  4. [式] ボックスに以下の式を入力します。

    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 ステートメントを ISEMPTY 関数と共に使用すると、製品の売上がない場合でも、ゼロによる除算のエラーが発生しません。

  5. [書式設定文字列] ボックスの一覧で ["Percent"] をクリックします。

  6. [空以外の動作] ボックスの一覧で、Internet Sales-Sales Amount のチェック ボックスをオンにして、[OK] をクリックします。

  7. [計算] タブのツール バーで、[新しい計算されるメンバ] をクリックします。

  8. この計算されるメンバの名前を「[Reseller Sales Ratio to All Products]」に変更します。

  9. [式] ボックスに以下の式を入力します。

    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
    
  10. [書式設定文字列] ボックスの一覧で ["Percent"] をクリックします。

  11. [空以外の動作] ボックスの一覧で、Reseller Sales-Sales Amount のチェック ボックスをオンにして、[OK] をクリックします。

  12. [計算] タブのツール バーで、[新しい計算されるメンバ] をクリックします。

  13. この計算されるメンバの名前を「[Total Sales Ratio to All Products]」に変更します。

  14. [式] ボックスに以下の式を入力します。

    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
    
  15. [書式設定文字列] ボックスの一覧で ["Percent"] をクリックします。

  16. [空以外の動作] ボックスの一覧で、Internet Sales-Sales AmountReseller Sales-Sales Amount のチェック ボックスをオンにして、[OK] をクリックします。

  17. [計算] タブのツール バーで [スクリプト ビュー] をクリックし、計算スクリプトに追加した 3 つの計算を確認します。

  18. 計算スクリプトで、[Internet Sales Ratio to All Products] 計算の直前に新しい行を追加して、その行に以下のテキストを独自の行として追加します。

    /* Calculations to calculate percentage of product to total product sales */
    

    これで、合計 8 つの計算されるメンバを定義しました。これらはフォーム ビューの [スクリプト オーガナイザ] ペインに表示されます。

新しい計算されるメンバの表示

新しい計算されるメンバを表示するには

  1. Business Intelligence Development Studio で、[ビルド] メニューの [Analysis Services Tutorial の配置] をクリックします。

  2. 配置が正常に完了したら、[ブラウザ] タブに切り替え、[再接続] をクリックします。次に、データ ペインからすべての階層とメジャーを削除します。

  3. [メタデータ] ペインで [Measures] を展開して、メジャー ディメンションの新しい計算されるメンバを表示します。

  4. Total Sales AmountInternet Sales-Sales Amount、および Reseller Sales-Sales Amount メジャーをデータ領域に追加して、結果を確認します。

    Total Sales Amount メジャーは、Internet Sales-Sales Amount メジャーと Reseller Sales-Sales Amount メジャーの合計になっています。

  5. Product Categories ユーザー定義階層をデータ ペインのフィルタ領域に追加し、[Mountain Bikes] でデータをフィルタ処理します。

    製品売上の計算対象が Mountain Bikes カテゴリになります。つまり、Mountain BikesInternet Sales-Sales Amount メジャーと Reseller Sales-Sales Amount メジャーに基づいて Total Sales Amount が計算されます。

  6. Date.Calendar Time ユーザー定義階層を行領域に追加して、結果を確認します。

    今度は、Mountain BikesInternet Sales-Sales Amount メジャーと Reseller Sales-Sales Amount メジャーに基づき、Mountain Bikes カテゴリを対象とした製品売上が年度ごとに計算され、Total Sales Amount として表示されます。

  7. Total GPMInternet GPM、および Reseller GPM メジャーをデータ領域に追加して、結果を確認します。

    再販業者による売上の売上総利益率は、インターネットでの販売と比べて著しく低くなっています。また、次の図のように、マウンテン バイクの売上における総利益率が毎年増加していることもわかります。

    再販業者の販売を示す [データ] ペイン

  8. Total Sales Ratio to All ProductsInternet Sales Ratio to All Products、および Reseller Sales Ratio to All Products メジャーをデータ領域に追加します。

    全製品の合計売上に占めるマウンテン バイクの売上の比率は、インターネット販売では毎年増加しているのに対し、再販業者販売では減少しています。全製品の合計売上に占めるマウンテン バイクの売上の比率は、インターネット販売の場合よりも、再販業者販売の場合の方が低いことにも注目してください。

  9. フィルタを [Mountain Bikes] から [Bikes] に変更して、結果を確認します。

    再販業者によるすべての自転車の販売に関する売上総利益率は負の値になっています。これはツーリング バイクおよびロード バイクの販売が赤字であるためです。

  10. フィルタを [Accessories] に変更して、結果を確認します。

    アクセサリの売上は毎年増加しているものの、合計売上に占める割合が非常に小さいことがわかります。また、アクセサリの売上における総利益率は、自転車よりも高くなっています。

  11. [CY 2004][H2 CY 2004][Q3 CY 2004] の順に展開します。

    このキューブには、2004 年 7 月より後のインターネット売上、および 2004 年 6 月より後の再販業者売上がないことがわかります。これらの売上値は、まだソース システムから Adventure Works DW データベースに追加されていません。

このレッスンの次の作業

名前付きセットの定義

参照

その他の技術情報

計算
計算の定義と構成
計算されるメンバの定義

ヘルプおよび情報

SQL Server 2005 の参考資料の入手