Ssas 按最后一列排序

Ssas 按最后一列排序,ssas,mdx,Ssas,Mdx,我有这个: SELECT NONEMPTY( [Date].[Calendar].[Calendar Year].MEMBERS ) * [Measures].[Internet Sales Amount] on 0, ORDER( [Customer].[Customer Geography].[State-Province].MEMBERS ,[Measures].[Internet Sales Amou

我有这个:

SELECT
    NONEMPTY(
        [Date].[Calendar].[Calendar Year].MEMBERS
    )
    *
    [Measures].[Internet Sales Amount] on 0,
    ORDER(
        [Customer].[Customer Geography].[State-Province].MEMBERS
        ,[Measures].[Internet Sales Amount]
        ,BDESC) 
     on 1
from [Adventure Works]
按最后一个日期列降序的最有效方式是什么?这应该是动态的,以便在月末时仍然有效。

我会使用

ORDER(
        [Customer].[Customer Geography].[State-Province].MEMBERS
        ,([Measures].[Internet Sales Amount]
          ,Tail([Date].[Calendar].[Calendar Year]).Item(0).Item(0)
         )
        ,BDESC) 

并假设添加的术语
Tail([Date].[Calendar].[Calendar Year])项(0)。项(0)
可以通过Analysis Services仅检查时间维度来计算,不需要任何动态上下文,因此应该是快速的。

如果希望有一个独立于列内容的表达式,可以使用:

ORDER([Customer].[Customer Geography].[State-Province].MEMBERS
      ,Tail(Axis(0)).item(0)
      ,BDESC) 

“高效”是指“快速执行”还是“易于编写MDX”,即。E“对分析服务有效”或“对开发人员有效”?@FrankPl始终快速执行+1,与我所做的非常相似-尽管在您的解决方案中,参数2和3不是元组,而是元组:是相同的吗?@whytheq实际上,应该是这样的。我更正了我的答案<代码>顺序不接受四个参数。如果你只是将代码放入答案中,而没有在真正的服务器上运行它,就会发生这种情况。酷-你没有广告Wks cube Frank吗?@whytheq是的,我有。但答案对我来说太简单了,我不想打开管理工作室来回答这个问题。也许我应该这么做……但是
Axis
函数会使查询速度变慢,尤其是与其他一些MDX功能结合使用时。问题是要求最快的执行方式,而不是最容易编写/维护MDX。在后一种情况下,你的答案是正确的。