2016-03-02 47 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

似乎大多數人都在使用分析服務,大部分工具都是針對這一點的。 –