MDX按月排序

MDX按月排序,mdx,pentaho,Mdx,Pentaho,我正在尝试整理我的第一个查询,以获得pentahoCDE仪表板图表 开始查询 WITH SET [~COLUMNS] AS {[DimProgram.Name].[Name].MEMBERS} SET [~ROWS] AS {[DimTime.CalendarYearMonth].[CalendarYearMonth].MEMBERS} SELECT NON EMPTY CrossJoin ( [~COLUMNS]

我正在尝试整理我的第一个查询,以获得
pentaho
CDE仪表板图表

开始查询

WITH 
  SET [~COLUMNS] AS 
    {[DimProgram.Name].[Name].MEMBERS} 
  SET [~ROWS] AS 
    {[DimTime.CalendarYearMonth].[CalendarYearMonth].MEMBERS} 
SELECT 
  NON EMPTY 
    CrossJoin
    (
      [~COLUMNS]
     ,{[Measures].[SubmissionCount]}
    ) ON COLUMNS
 ,NON EMPTY 
    [~ROWS] ON ROWS
FROM [PSE_FactSubmission];

此查询返回我想要的数据,但需要稍微调整以准备实际使用。我想按日期降序排序,并且只限于过去12个月

我已经阅读了一些关于MDX排序的网页,但是还没有能够组合出一个可以运行的查询。当查询没有运行时,只会出现“错误”提示

订购尝试

WITH 
  SET [~COLUMNS] AS 
    {[DimProgram.Name].[Name].MEMBERS} 
SELECT 
  NON EMPTY 
    CrossJoin
    (
      [~COLUMNS]
     ,{[Measures].[SubmissionCount]}
    ) ON COLUMNS
 ,NON EMPTY 
    Order
    (
      [DimTime.CalendarYearMonth].[CalendarYearMonth].MEMBERS
     ,[DimTime.CalendarYearMonth].CurrentMember.Member_Key
     ,DESC
    ) ON ROWS
FROM [PSE_FactSubmission];

任何关于分类或如何限制到过去X个月的提示都将不胜感激

通常,在多维数据集设计中,日期/时间维度是自然排序的,因此无需使用
顺序
。我不需要用我使用的立方体

如果它在多维数据集中的顺序奇怪,则需要使用
BASC
BDESC
打破(
B
)这种层次顺序:

WITH 
  SET [~COLUMNS] AS 
    {[DimProgram.Name].[Name].MEMBERS} 
  MEMBER [Measures].[orderMeas] AS 
    [DimTime.CalendarYearMonth].CurrentMember.Member_Key 
  SET [~ROWS] AS 
    Order
    (
      [DimTime.CalendarYearMonth].[CalendarYearMonth].MEMBERS
     ,[Measures].[orderMeas]
     ,BASC
    ) 
SELECT 
  NON EMPTY 
    CrossJoin
    (
      [~COLUMNS]
     ,{[Measures].[SubmissionCount]}
    ) ON COLUMNS
 ,NON EMPTY 
    [~ROWS] ON ROWS
FROM [PSE_FactSubmission];
要获取最近12个月的数据,您可以使用
Tail
函数-最好针对非空月使用它:

WITH 
  SET [~COLUMNS] AS 
    {[DimProgram.Name].[Name].MEMBERS} 
  MEMBER [Measures].[orderMeas] AS 
    [DimTime.CalendarYearMonth].CurrentMember.Member_Key 
  SET [~ROWS] AS 
    Order
    (
      NonEmpty
      (
        [DimTime.CalendarYearMonth].[CalendarYearMonth].MEMBERS
       ,[Measures].[SubmissionCount]
      )
     ,[Measures].[orderMeas]
     ,BASC
    ) 
SELECT 
  NON EMPTY 
    CrossJoin
    (
      [~COLUMNS]
     ,{[Measures].[SubmissionCount]}
    ) ON COLUMNS
 ,NON EMPTY 
    Tail
    (
      [~ROWS]
     ,12
    ) ON ROWS
FROM [PSE_FactSubmission];
嗨,安德鲁-对抗
AdvWrks
我已经运行了以下内容,没有任何错误。我需要将
Member\u键
更改为
MemberValue

WITH 
  SET [~COLUMNS] AS 
    [Product].[Product Categories].[Product]
  MEMBER [Measures].[orderMeas] AS 
    [Date].[Calendar].CurrentMember.MemberValue 
  SET [~ROWS] AS 
    Order
    (
      NonEmpty
      (
        [Date].[Calendar].[Month].MEMBERS
       ,[Measures].[Internet Sales Amount]
      )
     ,[Measures].[orderMeas]
     ,ASC
    ) 
SELECT 
  NON EMPTY 
    CrossJoin
    (
      [~COLUMNS]
     ,{[Measures].[Internet Sales Amount]}
    ) ON COLUMNS
 ,NON EMPTY 
    Tail
    (
      [~ROWS]
     ,12
    ) ON ROWS
FROM [Adventure Works];

谢谢你的回答。查看订单查询,读取代码本身是有意义的,但当输入时不会运行。您是否有最喜欢的工具用于编写/测试此类查询?我想我应该返回某种至少是半有用的错误消息,以帮助查看我的错误所在。只是
SSMS
应该生成错误消息吗?我使用MDX Studio(它是免费的)来玩MDX。让我针对AdvWrks cube创建一个原型,就像您的脚本一样,只是为了检查我的答案的结构。看起来大多数人都在使用analysis services&大多数工具都是针对这一点的。@AndrewAlters这是最好的工具,它是免费的,由mdx语言的创始人之一创建的: