次のような販売データを含む簡単なテーブルがあるとします。
- idショップ
- id 製品
- 日にち
- 額
計算されるメンバーの MDX クエリを作成して、前年同期に対する当期の売上比率を取得する方法を教えてください。
たとえば、ディメンションの 1 つとして月または四半期が選択されている場合です。
[年]、[月]、および [日] レベルの [時間] ディメンションがあるとします。
もしも
SELECT
[Time].[Jan 2015]:[Time].[Dec 2015] on 0,
[Measures].[Sales] on 1
FROM
[Cube]
2015 年のすべての月の売上を返します。計算されたメジャーを追加して比率を取得できます。
WITH
MEMBER [Sales Ratio] AS DivN(
[Sales],
( ParallelPeriod( [Time].[Year], 1, [Time].current ), [Sales] )
SELECT
[Time].[Jan 2015]:[Time].[Dec 2015] on 0,
{[Sales],[Sales Ratio]} on 1
FROM
[Cube]
DivNは icCube 固有であり、「空」の安全な分割を可能にします。
ParallelPeriodは標準の MDX 関数で、前年の月を返します。ラグ(-12)を使用することもできます。つまり、レベルを 12 回後方に「移動」します。
current (別名 Currentmember)も標準の MDX であり、階層/ディメンションの現在の値を取得できます。
icCube では、前年にナビゲートする関数を追加して、再利用できるようにします (必要に応じて修正します)。お気に入り :
WITH
FUNCTION timePrevYear(t_) AS ParallelPeriod( [Time].[Year], 1, t_ )
MEMBER [Sales Ratio] AS DivN(
[Sales],
( timePrevYear( [Time].current ), [Sales] )
SELECT
[Time].[Jan 2015]:[Time].[Dec 2015] on 0,
{[Sales],[Sales Ratio]} on 1
FROM
[Cube]
少し多すぎますが、最終的には、MDX Utility または Stats ディメンションで呼び出されるものにこの種の計算を追加できるため、エンド ユーザーがレポート ツールからドロップダウンでこれを選択できるようにすることもできます。詳細はこちら。