none
MDX问题:使用AVG函数为什么会出错? RRS feed

  • 问题

  • 我用的计算成员表达式如下:

    avg({[date].[time].[day].&[20101013] ,[date].[time].[day].&[20101014], [date].[time].[day].&[20101015] },[Measures].[DownRateAvg])

    执行查询后报错:Invalid procedure call or argument。

    更换avg中的度量为其他度量,又能正常查询了。感觉avg函数的出错和选取的度量有关系,而且和选取的度量的聚合方式也有点关系。但具体什么聚合方式下不能用avg函数还是没搞清楚。

    有没有遇到这类问题并成功解决的同学啊?帮帮忙啊!

    2011年1月28日 9:24

答案

  • 你的度量是计算成员的话,或者不是sum方式聚合的话,是可能无法avg的。
    想不想时已是想,不如不想都不想。
    • 已标记为答案 Mog Liang 2011年2月7日 6:45
    2011年1月31日 14:30
    版主

全部回复

  • 你的度量是计算成员的话,或者不是sum方式聚合的话,是可能无法avg的。
    想不想时已是想,不如不想都不想。
    • 已标记为答案 Mog Liang 2011年2月7日 6:45
    2011年1月31日 14:30
    版主
  • 在没法解决avg函数问题的情况下,最终替代方案只有用sum/count来解决了。

    以下是该计算成员的表达式:

    iif(count(
    {[DATE].[TIME].[DAY].&[20100801],[DATE].[TIME].[DAY].&[20100802],[DATE].[TIME].[DAY].&[20100803],[DATE].[TIME].[DAY].&[20100804],[DATE].[TIME].[DAY].&[20100805]}*{[Measures].[UpRate]},
     EXCLUDEEMPTY)>0, val(sum({[DATE].[TIME].[DAY].&[20100801],[DATE].[TIME].[DAY].&[20100802],[DATE].[TIME].[DAY].&[20100803],[DATE].[TIME].[DAY].&[20100804],[DATE].[TIME].[DAY].&[20100805]}, [Measures].[UpRate]))
    /
    val(count(
    {[DATE].[TIME].[DAY].&[20100801],[DATE].[TIME].[DAY].&[20100802],[DATE].[TIME].[DAY].&[20100803],[DATE].[TIME].[DAY].&[20100804],[DATE].[TIME].[DAY].&[20100805]}*{[Measures].[UpRate]},
     EXCLUDEEMPTY)),null)

    谢谢大家的关注和回复。

    2011年2月9日 8:50