MDX YTD 计算量度

MDX YTD calculated measure

我对 MDX 还是个新手,我正在尝试让一些基本函数在我的 SSAS 多维数据集中工作。你们能指出我在这里做错了什么吗?我使用以下代码向我的多维数据集添加了一个计算度量:

CREATE MEMBER CURRENTCUBE.[Measures].[Amount YTD]
AS
  AGGREGATE(
    YTD([OrderDate].[Calendar].CurrentMember)
   ,[Measures].[Amount]),
VISIBLE = 1, ASSOCIATED_MEASURE_GROUP = 'MyMeasureGroup';

之后,我正在尝试获取一些数据...

SELECT 
NON EMPTY
{
  [Measures].[Amount]
, [Measures].[Amount YTD]
} ON COLUMNS,
NON EMPTY
{
  [OrderDate].[Month].ALLMEMBERS *
  [Product].[Product Group].ALLMEMBERS 
} ON ROWS
FROM (SELECT ([OrderDate].[Year].&[2014-01-01T00:00:00]:
              [OrderDate].[Year].&[2015-01-01T00:00:00]) ON COLUMNS
FROM [SalesOrderIntake])

这是我得到的输出:

我在输出消息中没有看到任何错误,这让我很难弄清楚发生了什么。希望你们能帮我解决这个问题。

仅供参考:实际的 select 仅用于测试目的。我只想获得 YTD 运行。我已经尝试了几件事,但结果总是空的,所以如果我直接在 SSMS 中查询它而不是使用 BI 工具,我希望能得到一些实际的错误。此外,OrderDate 维度是生成的时间维度,由 VS 提供给我。

在您的查询中,您正在使用看起来像 属性 层次结构的内容:

[OrderDate].[Month].ALLMEMBERS

而该度量使用 用户 层次结构:

[OrderDate].[Calendar]

如果您在脚本中使用日历,它可以正常工作吗?

#Error 通常在 MDX 代码中存在 运行 时间错误时出现。我可以想到错误可能突然出现的一种情况。您正在计算成员中使用 [OrderDate].[Calendar].CurrentMember。但是,如果范围内的该层次结构中有多个成员而不是一个,则会引发错误。

下面是来自 Adventure Works 的场景。

with member abc as 
sum(YTD([Date].[Calendar].currentmember), [Measures].[Internet Sales Amount])

select abc on 0
from [Adventure Works]
where {[Date].[Calendar].[Date].&[20060115], [Date].[Calendar].[Date].&[20060315]} 

P.S。感谢@whytheq 教我通过双击单元格来检查此错误的技巧:)干杯。

我知道,它是旧的 post,但为了 posterity..

正确的做法是:

Aggregate
(
    PeriodsToDate
    (
        [OrderDate].[Calendar].[Fiscal Year]
        ,[OrderDate].[Calendar].CurrentMember
    )
    ,[Measures].[Amount]
)