【问题标题】:SSAS MDX Calculated Member: 3 months moving average not workingSSAS MDX 计算成员:3 个月移动平均线不起作用
【发布时间】:2019-08-13 02:43:49
【问题描述】:

我有一些 MDX 代码可以生成 3 个月的平均值。

它不起作用,我找不到问题。

我研究了许多网站 - 我正在尝试模拟为类似场景找到的代码,但看不出我做错了什么。

Calculated Member in SSAS MDX not working

我有一个财政时间维度和一个财政时间层次结构

Fiscal Time Dimension

我希望创建一个新的度量来显示当月的平均值 + 过去 2 个月的平均值(3 个月平均值),但现在它只显示 NULL 值

Result not showing the average, showing NULLs

有人发现我的错误吗?

谢谢!

【问题讨论】:

  • 嗨,“它不起作用”是什么意思?你有不正确的结果或根本没有结果?
  • 嗨 Hugo,我希望计算出的成员显示当月和前 2 个月的平均值,但现在只是给我扔空值。我正在将相应的图片添加到我的问题中。

标签: sql-server ssas mdx mdx-query analysisservices


【解决方案1】:

你应该试试这个公式(我尽量尊重你的维度和度量名称,如果我错了,请告诉我):

AVG({[FISCAL TIME].[FISCAL TIME HIERARCHY].CURRENTMEMBER.LAG(2):[FISCAL TIME].[FISCAL TIME HIERARCHY].CURRENTMEMBER},[Measures].[AMOUNT or UNIT - WARRANTY])

显然,当您使用层次结构时,您无法指定级别(如FISCAL MONTH (Label Only))。

请注意,当您在“月”级别浏览时,此公式有效,但如果您转到日级别,它将计算 3 个移动天(年和所有其他级别的原则相同)。

如果您想将计算固定在 3 个移动月,无论粒度如何(月或更小),我建议您使用 PARALLELPERIOD 函数:

AVG({PARALLELPERIOD([FISCAL TIME].[FISCAL TIME HIERARCHY].[FISCAL MONTH (Label Only)],2,[FISCAL TIME].[FISCAL TIME HIERARCHY].CURRENTMEMBER):[FISCAL TIME].[FISCAL TIME HIERARCHY].CURRENTMEMBER},[Measures].[AMOUNT or UNIT - WARRANTY])

我还建议您添加一个范围以将此计算的值设置为 NULL,当您的级别高于 Month 时。

我真的希望它能解决您的问题。

【讨论】:

  • 感谢 Hugo,这两种方法都有效。我真的是 SSAS MDX 的新手,你将如何在下面的代码中添加一个范围,以便它只在月份级别计算? . AVG({PARALLELPERIOD([FISCAL TIME].[FISCAL TIME HIERARCHY].[FISCAL MONTH (Label Only)],2,[FISCAL TIME].[FISCAL TIME HIERARCHY].CURRENTMEMBER):[FISCAL TIME].[FISCAL TIME HIERARCHY].CURRENTMEMBER},[Measures].[AMOUNT or UNIT - WARRANTY]) 。而且,我能做些什么来将月份的平均值汇总到季度级别,将 quartes 的平均值汇总到半年级别,将半年的平均值汇总到年级别?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-07
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
相关资源
最近更新 更多