(使用 SSAS 2008r2,在投标中工作)
关于计算的时间段成员和计算的半加法度量之间的交互,我遇到了一个令人困惑的问题。
我根据文章“时间计算的不同方法”构建了一个“时间段”维度,它允许用户将度量过滤到“上周”、“上个月”等。
这些计算成员的代码如下所示:
Scope([Time Period].[LW]);
This = (ParallelPeriod([Time].[Date Hierarchy].[Week],
1,
[Time].[Date Hierarchy].currentmember)
, [Time Period].[Current]);
End Scope;
(显然,月份和年份对于parallelPeriod 有不同的第一个参数:))
这些几乎适用于我拥有的所有度量,其中大多数只是表值等的总和,除了库存度量。
我们将库存数据存储为移动值(2 进、1 出、5 进等),任何时间点的总库存水平是迄今为止的总和。这些是通过如下计算来实现的:
Create Member CurrentCube.[Measures].[Stock Quantity] as
sum
(
null:tail(descendants([Time].[Date Hierarchy].CurrentMember,
[Time].[Date Hierarchy].[Date])).item(0)
, [Measures].[Stock Movement Quantity]
)
现在来解决问题。时间按照 4-4-5 周月模式设置,每 4 年 53 周。
当使用“时间段”维度中的“上周”时,计算按预期工作,完全没有问题。
使用“上个月”时,“迄今为止的总和”计算似乎缺少第 5 周的股票变动值(即,它给出了迄今为止第 1 周、第 2 周、第 3 周、第 4 周的股票变动总和,并且不包括所有股票变动在第 5 周)。当使用“去年”时,它做同样的事情,但只排除第 53 周的股票走势值(使用“去年”时,它包括第 5 周的股票走势)。但是,如果我在查询中使用以下成员:
member [Measures].[Test] as
sum
(
null:tail(descendants(parallelperiod([Time].[Date Hierarchy].[Month],
1,
[Time].[Date Hierarchy].CurrentMember),
[Time].[Date Hierarchy].[Date])).item(0)
, [Measures].[Stock Movement Quantity])
它工作正常。所以看起来问题出在 [Time Period].[LW] 或 [Time Period].[LY] 维度成员与迄今为止的总和 [Measures].[Stock Quantity] 计算相结合时......
所以我想我知道问题出在哪里,任何人以前见过这个或者可以就如何解决它提供一些建议?(如果可能的话,为什么?需要它工作,但我很想知道我哪里出错了!!)