我创建了一个具有许多不同聚合的多维数据集,并且我所做的任何求和都在 MDX 中。我正在根据以前的图纸对彩票行为进行建模。这是我当前的代码:
WITH
SET [Alpha And Beta And Theta] AS
NONEMPTY (
{ [Dwtbl Dim Test Alpha].[Alpha PK].MEMBERS } *
{ [Dwtbl Dim Beta].[Beta PK].MEMBERS } *
{ [Dwtbl Dim Theta].[Theta PK].MEMBERS }
)
MEMBER Measures.TotalHits AS
SUM ( [Alpha And Beta And Theta]
, COALESCEEMPTY([Measures].[Hits],0)
)
MEMBER [Measures].[PrevMonth_TotalHits] AS
(ParallelPeriod ([Date].[CalendarYear].[Month NK]
, 1
, [Date].[CalendarYear].Currentmember
)
,[Measures].[TotalHits]
)
SELECT
{
[Measures].[TotalHits],
[Measures].[PrevMonth_TotalHits]
} ON COLUMNS
FROM [cubAgents]
WHERE ( [Date].[Year].[2013],
[Date].[Month NK].[7])
现在,当我在 7 月通过时,代码按预期工作;我从 7 月和 6 月开始计算命中数。但是,当我在尚未发生的 8 月 [8] 中通过时,当前月和上月都为空。
为什么会这样?好吧,我的集合 [Alpha And Beta And Theta] 是一个大的非空交叉连接,每个维度都不会发生,因为它是在未来。如果我删除非空,它会工作得很好......但需要 3 分钟才能完成。我在这方面花了太多时间,我想是时候联系专家了。
也许一种方法是直接汇总我上个月的 [Hits] 度量值,而不是使用 parallelPeriod,例如
MEMBER [Measures].[PrevMonth_Hits] AS
SUM ( {[Alpha And Beta And Theta]*[Date].[CalendarYear].Currentmember.LAG(1)}
, COALESCEEMPTY([Measures].[Hits],0)
)
这行不通。
任何帮助是极大的赞赏。谢谢!