我有办法在层次结构级别查看第一个和/或最后一个叶子值吗?
我正在尝试在SSAS中创建一个计算维度,其中包括,例如,年初至今的计算,我不希望在将来显示日期。
我已经研究了如何在最低级别(日期)实现这一点,但是在尝试实现该技术时,我会在聚合级别上遇到错误。
为了帮助我完成我想要的事情,我在我的维度中包含了一个[Date In Past]成员,如果日期是过去的话,则包含0,如果不是,则包含a。
例如此查询,按日期返回计算:
with member [Measures].[Year To Date] as
Sum(
{ IIF(strtovalue(
[Time Order Date].[Date In Past].Currentmember.membervalue
) = 0, null, [Measures].[Product Rev (with ship, no disc)]
) } *
PeriodsToDate(
[Time Order Date].[Fiscal Date].[Fiscal Year Name],
[Time Order Date].[Fiscal Date].CurrentMember
)
)
select
{[Measures].[Product Rev (with ship, no disc)],
[Measures].[Year To Date]} on 0,
[Time Order Date].[Date].Children on 1
from [Sales Analysis]
将在[年初到期]度量中返回将来所有日期的空值。
此查询按周返回计算:
with member [Measures].[Year To Date] as
Sum(
{ IIF(strtovalue(
[Time Order Date].[Date In Past].Currentmember.membervalue
) = 0, null, [Measures].[Product Rev (with ship, no disc)]
) } *
PeriodsToDate(
[Time Order Date].[Fiscal Date].[Fiscal Year Name],
[Time Order Date].[Fiscal Date].CurrentMember
)
)
select
{[Measures].[Product Rev (with ship, no disc)],
[Measures].[Year To Date]} on 0,
[Time Order Date].[Fiscal Week Name].Children on 1
from [Sales Analysis]
返回所有[Year To Date]值的错误,我假设因为本周有多个成员。
我想将它与本周的最后一天进行比较。我怎么能这样做?
谢谢, - sw
答案 0 :(得分:0)
从字面上回答您的问题:是的,您可以使用Head
和Tail
方法获取集合的第一个或最后一个成员,从而获得级别。请注意,这些返回一个单元素集,因此您经常使用Tail(something).Item(0).Item(0)
来获取成员。
但是,正如我理解您的问题,您真正需要知道的是,在当前上下文中,成员[Time Order Date].[Date In Past].[a]
是否存在。
在那种情况下,我会使用
with member [Measures].[Year To Date] as
IIf(Intersect(EXISTING [Time Order Date].[Date In Past].[Date In Past].Members,
{[Time Order Date].[Date In Past].[a]}
).Count = 1,
NULL,
Sum(PeriodsToDate([Time Order Date].[Fiscal Date].[Fiscal Year Name],
[Time Order Date].[Fiscal Date].CurrentMember
)
[Measures].[Product Rev (with ship, no disc)]
)
)
select
{[Measures].[Product Rev (with ship, no disc)],
[Measures].[Year To Date]} on 0,
[Time Order Date].[Fiscal Week Name].Children on 1
from [Sales Analysis]
EXISTING
获取当前上下文中存在的所有Date In Past
成员的集合。并且与成员a
的单元素集的交集具有1个元素(如果a
是第一个集合的成员)或0个元素(如果a
不是包含在集合中),它解释了IIf
的条件。