2

サンプルデータ

OLAP キューブを次の形式でエクスポートしました (メジャーの[Some Percent]使用法は ですAverage over time):

             [Net Weight]   [Some Percent]
             4 387          2,10%
             3 304          1,60%
Grand total: 7 691          1,85% -- Percent is AVG

方式

[Modified Percent]次のように計算する必要がある新しい計算メンバーを作成する必要があります。

[Net Weight].[1] / [Net Weight].[Total] * [Some Percent].[1] + 
[Net Weight].[2] / [Net Weight].[Total] * [Some Percent].[2] +
[Net Weight].[n] / [Net Weight].[Total] * [Some Percent].[n] -- can be n rows

サンプルデータを使用した式

したがって、私のサンプルデータは次のようになります。

4 387 / 7691 * 2,10 +   |   1,20%
3 304 / 7691 * 1,60     |   0,69%
                    =   |   1,89% -- Sum of percent 

望ましい出力

[Modified Percent]次のように返されます。

             [Net Weight]   [Some Percent]             [Modified Percent]
             4 387          2,10%                      1,20%
             3 304          1,60%                      0,69%
Grand total: 7 691          1,85% -- Percent is AVG    1,89%

MDX スクリプト

今のところ私はMDX Script以下を持っていますが[Modified Percent]、同じ値を返します[Some Percent]

CREATE MEMBER CURRENTCUBE.[Measures].[Modified Percent]
 AS ([Measures].[Net Weight] / sum([Vendor Invoice].[Vendor Invoice No].[All],[Measures].[Net Weight]))  * [Measures].[Some Percent], 
FORMAT_STRING = 'Percent', 
NON_EMPTY_BEHAVIOR = { [Net Weight] }, 
VISIBLE = 1;   

これも試しましたが、不運にも同じ結果になりました:

CREATE MEMBER CURRENTCUBE.[Measures].[Modified Percent]
 AS ([Vendor Invoice].[Vendor Invoice No].CurrentMember,[Measures].[Net Weight]) / 
     iif(
        ([Vendor Invoice].[Vendor Invoice No].CurrentMember.Parent,[Measures].[Net Weight]) = 0,
        ([Vendor Invoice].[Vendor Invoice No].CurrentMember,[Measures].[Net Weight]),
        ([Vendor Invoice].[Vendor Invoice No].CurrentMember.Parent,[Measures].[Net Weight])
        )
      * [Measures].[Some Percent], 
FORMAT_STRING = 'Percent', 
NON_EMPTY_BEHAVIOR = { [Net Weight] }, 
VISIBLE = 1; 

分割部分が 1 を返すように見えます。それを解決する方法はありますか? ご不明な点がございましたら、お問い合わせください。詳細をお知らせします。

4

1 に答える 1

1

問題は、計算が合計 (すべて) レベルで適用されていることです。ここで、[Measures].[Net Weight]は に等しいSUM([Vendor Invoice].[Vendor Invoice No].[All], [Measures].[Net Weight])ため、調整係数は 1.0 です。

このブロック全体をキューブの MDX 計算スクリプトに配置してみてください。

CREATE MEMBER CURRENTCUBE.[Measures].[Modified Percent]
     AS ([Measures].[Net Weight]
         / sum([Vendor Invoice].[Vendor Invoice No].[All], [Measures].[Net Weight]))
       * [Measures].[Some Percent], 
    FORMAT_STRING = 'Percent', 
    NON_EMPTY_BEHAVIOR = { [Net Weight] }, 
    VISIBLE = 1;  

SCOPE ([Measures].[Modified Percent], [Vendor Invoice].[Vendor Invoice No].[All]);
    this = SUM([Vendor Invoice].[Vendor Invoice No].[All].children, [Measures].[Modified Percent]));
END SCOPE;

これは合計をオーバーライドし、再計算するのではなく、子を合計するように指示します。

于 2015-09-08T12:56:50.700 に答える