2017-02-08 113 views
0

我的時間維度中有一個日期級別。MDX:隨時間變化的行數

我要輸出的天像下面的語句選定範圍的總和/平均:

WITH 
    MEMBER measures.[sum1] AS 
    Sum([Measures].[Menge_Artikel_Stk]) 
    MEMBER measures.[sum2] AS 
    Sum 
    (
     [D_Datum].[Datum].[Tag] 
    ,[Measures].[Menge_Artikel_Stk] 
    ) 
SELECT 
    { 
    [Measures].[stock] 
    ,[Measures].[sum1] 
    ,[Measures].[sum2] 
    } ON 0 
,NON EMPTY 
    CrossJoin 
    (
     {[D_item].[itemno].[itemno].MEMBERS} 
    ,{ 
     [D_Date].[Date].[day].[30.01.2017] : [D_Date].[Date].[Day].[05.02.2017] 
     } 
    ) ON 1 
FROM [Cube]; 

我的目標是展示沿過濾的行日期維總和/平均。 enter image description here

而不是40/1653我想總和顯示250的總和或35,7的平均值。 (1653顯然是全天的總和)。我想將此計算的成員添加到Excel表單。因此時間範圍設置是可變的。

回答

0

要獲得總和/平均行雖然在特定範圍內,你可以做這樣的事情:

WITH 
    MEMBER measures.[sum1] AS 
    Sum([Measures].[Menge_Artikel_Stk]) 
    MEMBER measures.[sum2] AS 
    Sum 
    (
     [D_Datum].[Datum].[Tag] 
    ,[Measures].[Menge_Artikel_Stk] 
    ) 
    MEMBER [D_Date].[Date].[All].[DaySum] AS 
    Sum 
    (
     [D_Date].[Date].[day].[30.01.2017] : [D_Date].[Date].[Day].[05.02.2017] 
    ) 
    MEMBER [D_Date].[Date].[All].[DayAvg] AS 
    Avg 
    (
     [D_Date].[Date].[day].[30.01.2017] : [D_Date].[Date].[Day].[05.02.2017] 
    ) 
SELECT 
    { 
    [Measures].[stock] 
    ,[Measures].[sum1] 
    ,[Measures].[sum2] 
    } ON 0 
,NON EMPTY 
    CrossJoin 
    (
     {[D_item].[itemno].[itemno].MEMBERS} 
    ,{ 
     { 
      [D_Date].[Date].[day].[30.01.2017] : [D_Date].[Date].[Day].[05.02.2017] 
     } 
     ,[D_Date].[Date].[All].[DaySum] 
     ,[D_Date].[Date].[All].[DayAvg] 
     } 
    ) ON 1 
FROM [Cube]; 
+0

感謝這篇文章。我認爲這是行不通的,因爲間隔會被固定,因此通過改變Excel-Filter沒有傳遞給結果? – rasenkantenstein

+0

@rasenkantenstein正確 - 使這種動態我不確定。雖然解決方法是爲RollingSum和RollingAvg添加自定義度量,而不是您正在使用的方法。 – whytheq

0

可以使用軸的功能來定義您軸電流設定:

WITH 
MEMBER measures.[sum] AS 
Sum(
    Axis(1), 
    [Measures].[Menge_Artikel_Stk] 
) 
MEMBER measures.[avg] AS 
AVG(
    Axis(1), 
    [Measures].[Menge_Artikel_Stk] 
) 

SELECT 
    {[Measures].[Menge_Artikel_Stk],[Measures].[sum],[Measures].[avg]} ON 0, 
    NON EMPTY {[D_Date].[Date].[day].[30.01.2017]:[D_Date].[Date].[Day].[05.02.2017]} ON 1 
FROM [Cube];