2016-03-02 85 views
0

我正在尝试将我的第一个查询作为pentaho CDE仪表盘图表。MDX按月排序

开始查询

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]; 

enter image description here

该查询返回我想要的数据,但需要进行调整了一下,准备好实际使用。我想按日期降序排序,并且只限于过去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月任何提示将非常赞赏。

回答

0

通常情况下,日期/时间维度在立方体设计中自然排序,因此不需要使用Order。我不需要使用我使用的立方体。

如果是在立方体一个陌生的顺序,那么你需要使用BASCBDESC打破(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_Key更改为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]; 
+0

感谢您的回答。查看订单查询,阅读代码本身是有道理的,但是放入时无法运行。是否有用于编写/测试这类查询的最喜欢的工具?我想我应该回来排序至少半帮助的错误消息,以帮助看到我出错的地方。 –

+0

只是'SSMS'应该会产生一个错误信息?我使用MDX Studio(它是免费的)来玩mdx。让我创建一个类似于您的脚本的原型来对付AdvWrks cube,以检查我的答案的结构。 – whytheq

+0

似乎大多数人都在使用分析服务,大部分工具都是针对这一点的。 –