簡體   English   中英

如何通過MDX對OLAP(SSAS)中的特定層次結構級別進行排序

[英]How to sort specific Hierarchy Level in OLAP (SSAS) via MDX

我正在使用SSAS OLAP ,我想對層次結構的級別進行排序。

我知道我可以通過ORDER函數對整個層次結構進行排序(當我嘗試在整個層次結構上應用DESC排序時遇到一些問題),但是我真正想要實現的是對特定級別進行排序。 例如,在[Date]。[Calendar]層次結構(Adventure Works Cube)中,我想對年份進行ASC排序,對DESC對Quarter進行排序,對ASC對月份進行排序,等等。我不想破壞層次結構(使用BASC或BDESC),我只需要將它們排序在同一級別即可。 您是否有想法,因為我無法找到任何類似的東西?

您可以做的是交叉連接有序的對應屬性層次結構。 您可以驗證以下結果:

select
[Measures].[Internet Sales Amount] on 0,

Order(
[Date].[Calendar Year].[Calendar Year].MEMBERS,
[Measures].[Internet Sales Amount]
,ASC)
*
Order(
[Date].[Calendar Quarter of Year].[Calendar Quarter of Year].MEMBERS,
[Measures].[Internet Sales Amount]
,DESC)
*
Order(
[Date].[Calendar].[Month].MEMBERS,
[Measures].[Internet Sales Amount]
,ASC)

ON 1
from [Adventure Works]

包括所有成員都可以提供幫助(在第一個交叉聯接集的情況下,[日期]。[日歷年]而不是[日期]。[日歷年])

菲利普

以下是一個可行的解決方案,即使不是一個很好的解決方案:

WITH MEMBER Measures.[year] as
            [Date].[Calendar].CurrentMember.Properties('Key0', typed)
     MEMBER Measures.[qtr or mth] as
            [Date].[Calendar].CurrentMember.Properties('Key1', typed)
     MEMBER Measures.[sortKey] as
            CASE
                WHEN [Date].[Calendar].CurrentMember.Level IS [Date].[Calendar].[Calendar Year] THEN
                     Measures.[year] * 1000
                WHEN [Date].[Calendar].CurrentMember.Level IS [Date].[Calendar].[Calendar Quarter] THEN
                     Measures.[year] * 1000 + (5 - Measures.[qtr or mth]) * 100
                ELSE // month
                     Measures.[year] * 1000 + (4 -  Int((Measures.[qtr or mth] - 1) / 3)) * 100 + Measures.[qtr or mth]
            END
SELECT {Measures.[year], Measures.[qtr or mth], Measures.[sortKey]}
       ON COLUMNS,
       Order(
               [Date].[Calendar].[Calendar Year]
               +
               [Date].[Calendar].[Calendar Quarter]
               +
               [Date].[Calendar].[Month]
               ,
               Measures.[sortKey]
               ,BASC
       )
       ON ROWS
FROM [Adventure Works]

列上的措施僅是為了闡明其工作方式。 並且主要邏輯在於sortKey度量的生成,該度量生成如下整數鍵:年份四位數字,后四分之一數字(Q4-> 1,... Q1-> 4),兩位數字這個月。 然后,使用它可以直接調用Order返回排序后的集合。

事實證明,不可能達到預期的效果-沒有這樣的MDX查詢可以使用不同的排序類型對不同級別進行排序。 該線程中提供了更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM