如果今天的日期是2008年7月11日,则MTD
金额适用于{2008年7月1日至2008年7月11日}的范围。
6月的先前等效MTD期间为{2008年6月1日 - 2008年6月11日}
以前的5月MTD期间为{2008年5月1日 - 2008年5月11日}。
我有以下MDX
脚本:
WITH
MEMBER [Measures].[PrevEquivalentMTD] AS
//SUM
(
ParallelPeriod
(
[Date].[Calendar].[Month]
,1
,[Date].[Calendar].CurrentMember
)
,[Measures].[Internet Sales Amount]
)
MEMBER [Measures].[PrevEquivalentMTD_v2] AS
Sum
(
Generate
(
{
[Date].[Calendar].[Date].&[20080701]
:
[Date].[Calendar].[Date].&[20080710]
}
,{
ParallelPeriod
(
[Date].[Calendar].[Month]
,1
,[Date].[Calendar].CurrentMember.Item(0)
)
}
)
,[Measures].[Internet Sales Amount]
)
SELECT
{
[Date].[Calendar].[Month].&[2005]&[6]
:
[Date].[Calendar].[Month].&[2008]&[7]
} ON ROWS
,{
[Measures].[Internet Sales Amount]
,[Measures].[PrevEquivalentMTD]
,[Measures].[PrevEquivalentMTD_v2]
} ON COLUMNS
FROM [Adventure Works];
结果如下:
措施PrevEquivalentMTD
不是我正在寻找的,因为它返回的是前一个月的总数,而不仅仅是前10天。
措施PrevEquivalentMTD_v2
我不确定这样做是为了每个月返回相同的数字。
如何创建一个能够返回每个月前10天的互联网销售总额的指标?
答案 0 :(得分:1)
The PeriodsToDate
method。但是,由于您在查询中没有第11个作为选定成员,因此我只使用11作为给定输入。
WITH
MEMBER [Measures].[PrevEquivalentMTD] AS
Sum(Head([Date].[Calendar].CurrentMember.PrevMember.Children, 11),
[Measures].[Internet Sales Amount])
SELECT
{
[Measures].[Internet Sales Amount]
,[Measures].[PrevEquivalentMTD]
} ON COLUMNS,
{
[Date].[Calendar].[Month].&[2005]&[6]
:
[Date].[Calendar].[Month].&[2008]&[7]
} ON ROWS
FROM [Adventure Works]
这是将前一个月的前十一个(Head( ,11)
)子(PrevMember
)从单元格的行上下文中取出当前的一个,然后对这些子进行求和。
要动态转到11
,你可以这样做。 G。使用像
Rank(Tail([Date].[Calendar].[Date]).Item(0),
Tail([Date].[Calendar].[Month]).Item(0).Item(0).Children
)
确定其父级月份的子级中日历层次结构的最后一天的位置(Rank
)。假设没有错过的日子e。 G。对于周末,这应该工作。它为Adventure Works返回30,因为2010年11月30日是日历层次结构中的最后一天。