Ssas 如何查看层次结构中的第一个和/或最后一个成员值

Ssas 如何查看层次结构中的第一个和/或最后一个成员值,ssas,mdx,Ssas,Mdx,有没有办法查看层次结构级别中的第一个和/或最后一个叶值 我正在尝试在SSAS中创建一个计算维度,该维度将包括,例如,我不希望在将来的日期显示的年初至今的计算 我已经解决了如何在最低级别(日期)实现这一点,但在尝试实现该技术时,在聚合级别上会出现错误 为了帮助我完成我想要的,我在我的维度中包含了一个[Date In Past]成员,如果日期在过去,则包含一个0,如果日期不是过去,则包含一个 例如,此查询按日期返回计算结果: with member [Measures].[Year To Date]

有没有办法查看层次结构级别中的第一个和/或最后一个叶值

我正在尝试在SSAS中创建一个计算维度,该维度将包括,例如,我不希望在将来的日期显示的年初至今的计算

我已经解决了如何在最低级别(日期)实现这一点,但在尝试实现该技术时,在聚合级别上会出现错误

为了帮助我完成我想要的,我在我的维度中包含了一个[Date In Past]成员,如果日期在过去,则包含一个0,如果日期不是过去,则包含一个

例如,此查询按日期返回计算结果:

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]
返回将来所有日期的[Year to Date]度量值中的空值

此查询按周返回计算结果:

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

逐字回答您的问题:是的,您可以使用和方法获得集合的第一个或最后一个成员,从而获得级别。请注意,它们返回一个元素集,因此您通常使用
Tail(something).Item(0).Item(0)
来获取成员

但是,据我所知,您真正需要知道的是,在当前上下文中,成员
[时间顺序日期].[过去日期].[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]

获取当前上下文中存在的所有过去日期成员的集合。与成员
a
的一个元素集的交集要么有1个元素(如果
a
是第一个集合的成员),要么有0个元素(如果
a
不包含在集合中),这解释了
IIf
的条件谢谢。这帮了大忙!