MDX - 带月平均值的日线图

MDX - Daily chart with monthly average

我需要一个很大的帮助。

我正在使用 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]

谢谢。

如果您在日期维度中具有多级用户层次结构,但您使用的是以下两个属性层次结构,则此类查询很容易完成:

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

尝试对 Date 使用当前成员,然后使用 NonEmpty 来获取相应的月份:

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 测试以上内容!

以下代码也必须有效:

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

如果你有层次结构 Day -> Month 并且想按父级获取 AVG,请尝试:

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