2017-04-04 46 views
0

我需要一個很大的幫助。MDX - 具有月平均值的日線圖

我正在使用MDX在Pentaho - CDE/CTools中生成圖形。我需要做一系列由用戶設置的過濾器。該圖表是每日進度,我想添加該月份的平均線。但它運行得不好。

我在做什麼錯?我對MDX沒有太多的知識。它應該顯示值並重復整個月份的平均值,但它會重複相同的值。

WITH 
MEMBER [Measures].[AVG] AS 
AVG ([MONTH].[MONTH].CurrentMember, [Measures].[QTD]) 
SELECT NON EMPTY {[Measures].[QTD], [Measures].[AVG]} ON COLUMNS, 
     {[DATE].[DATE].Members} ON ROWS 
FROM [DW20_DAY] 
WHERE Crossjoin(Crossjoin(Crossjoin({[MONTH].[All MONTHs]}, {[CAUSE].[All CAUSEs]}), {[TYPE].[All TYPEs]}), {[MODEL].[All MODELs]}) 

帶濾波器:

WITH 
MEMBER [Measures].[AVG] AS 
AVG ([MONTH].[MONTH].CurrentMember, [Measures].[QTD]) 
SELECT NON EMPTY {[Measures].[QTD], [Measures].[AVG]} ON COLUMNS, 
     {[DATE].[DATE].Members} ON ROWS 
FROM [DW20_DAY] 
WHERE Crossjoin(Crossjoin(Crossjoin({[MONTH].[2017-03-01]}, {[CAUSE].[All CAUSEs]}), {[TYPE].[All TYPEs]}), {[MODEL].[All MODELs]}) 

數據的樣本 - 在這種情況下,平均應該是:7.567.743

DATE  QTD   AVERAGE   It has to be 
01/11/2016 7.731.442 7.731.442  7.567.743 
02/11/2016 7.973.846 7.973.846  7.567.743 
03/11/2016 7.430.333 7.430.333  7.567.743 
04/11/2016 7.517.061 7.517.061  7.567.743 
05/11/2016 6.738.677 6.738.677  7.567.743 
06/11/2016 6.796.424 6.796.424  7.567.743 
07/11/2016 7.631.584 7.631.584  7.567.743 
08/11/2016 7.907.649 7.907.649  7.567.743 
09/11/2016 8.995.933 8.995.933  7.567.743 
10/11/2016 7.444.471 7.444.471  7.567.743 
11/11/2016 8.039.431 8.039.431  7.567.743 
12/11/2016 7.240.583 7.240.583  7.567.743 
13/11/2016 6.779.103 6.779.103  7.567.743 
14/11/2016 7.648.149 7.648.149  7.567.743 
15/11/2016 7.641.452 7.641.452  7.567.743 

---- 編輯:

我要求創建時間維度。 現在它在同一個層次結構中。

但我仍然無法解決它。 在這種情況下,它看起來如何?

WITH MEMBER [Measures].[AVG] AS 
Avg(Descendants([TIME].[MONTH].CURRENTMEMBER, [TIME].[DATE]) 
, [Measures].[QTDE] 
) 
SELECT {[Measures].[QTD], [Measures].[AVG]} ON COLUMNS, 
     NON EMPTY{[TIME].[DATE].MEMBERS} ON ROWS 
FROM [DW20_DAY] 

感謝。

回答

0

下面的代碼必須工作,以及:

Member [Measures].[AVG] as 
AVG([DATE].[DATE].[DATE].Members, [Measures].[QTD]) 

如果你有一個層次日 - >月,並希望獲得母公司AVG,嘗試:

AVG([DATE].[DATE].CurrentMember.Siblings, [Measures].[QTD]) 
+0

對於總人口它工作,當我申請一個過濾器沒有... –

+0

你使用一個月的過濾器?嘗試交叉加入:AVG([DATE]。[MONTH] .CurrentMember * [DATE]。[DATE]。[DATE] .Members,[Measures]。[QTD]) –

+0

我已經使用親子邏輯。 –

1

這類查詢很容易,如果你有一個日期維度內的多級用戶層次結構,但做你使用以下兩種屬性層次:

[MONTH].[MONTH] 
[DATE].[DATE] 

嘗試使用針對日期currentmember然後非空,以獲取相應月份的保持:

NonEmpty([MONTH].[MONTH].MEMBERS,[DATE].CURRENTMEMBER) 

然後,你需要找到與該月的日期在做平均:

NonEmpty([DATE].[DATE].MEMBERS, 
NonEmpty([MONTH].[MONTH].MEMBERS,[DATE].CURRENTMEMBER).ITEM(0) 
) 

然後嘗試運用平均:

WITH 
MEMBER [Measures].[AVG] AS 
AVG (
    NonEmpty(
    [DATE].[DATE].MEMBERS, 
    NonEmpty(
     [MONTH].[MONTH].MEMBERS,[DATE].CURRENTMEMBER).ITEM(0) 
    ) 
    , [Measures].[QTD] 
) 
... 
... 

我需要上面的測試對AdvWrks!

+0

現在我有時間的層次結構。在這種情況下,我該怎麼做?我在帖子中添加了。我做到這一點的方式仍然重複着價值觀。 –