2017-01-23 44 views
0

我有一個來自WEBI的RANK代碼,需要在DAX或MDX中編寫類似的代碼。兩者都可以工作。但DAX會更有用。DAX - RANK功能

=Rank([OrderCount];([Category1];[Category2];[Category3])) 

我已經在DAX下面的代碼嘗試,但它不是確切的我需要什麼。

=RANK.EQ(table1[OrderCount];table1[OrderCount]) 

你能幫我寫出類似嗎?

Grouping by Count. This is extra.

回答

1

我不是在DAX很好,但MDX方法如下:

with 
Dynamic Set OrderedSet as 
Order(
    NonEmptyCrossJoin(
     [Dim Product].[Subcategory Name].[Subcategory Name].Members, 
     [Dim Product].[Category Name].[Category Name].Members 
     [Measures].[Order Quantity], 
     2 
    ), 
    [Measures].[Order Quantity], 
    BDESC 
) 

Member [Measures].[Rank] as 
Rank(

     ([Dim Product].[Subcategory Name].Currentmember, 
     [Dim Product].[Category Name].Currentmember), 
     OrderedSet 
) 

select 
{[Measures].[Order Quantity],[Measures].[Rank]} on 0, 
non empty OrderedSet on 1 
from 
[Adventure Works DW2016CTP3] 

DenseRank:

with 
Dynamic Set OrderedSet as 
Order(
    NonEmptyCrossJoin(
     [Dim Product].[Subcategory Name].[Subcategory Name].Members, 
     [Dim Product].[Category Name].[Category Name].Members, 
     [Measures].[Order Quantity], 
     2 
    ), 
    [Measures].[Order Quantity], 
    BDESC 
) 

Dynamic Set DenseOrderedSet as 
Order(
    NonEmpty(
     OrderedSet, 
     [Measures].[RankFirstMatch] 
    ), 
    [Measures].[Order Quantity], 
    BDESC 
) 

Member [Measures].[Rank] as 
Rank(
    ([Dim Product].[Subcategory Name].Currentmember,[Dim Product].[Category Name].CurrentMember), 
    OrderedSet 
) 

Member [Measures].[RankFirstMatch] as 
IIF(
    [Measures].[Order Quantity] 
    = 
    (
     OrderedSet.Item([Measures].[Rank] -2), 
     [Measures].[Order Quantity] 
    ), 
    NULL, 
    [Measures].[Rank] 
) 

Member [Measures].[RankDenseSet] as 
Rank(
    ([Dim Product].[Subcategory Name].Currentmember,[Dim Product].[Category Name].CurrentMember), 
    DenseOrderedSet 
) 


Member [Measures].[DenseRank] as 
IIF(
    [Measures].[RankDenseSet] = 0, 
    (OrderedSet.Item([Measures].[Rank] -2),[Measures].[DenseRank]), 
    [Measures].[RankDenseSet] 
) 


select {[Measures].[Order Quantity],[Measures].[Rank],[Measures].[RankFirstMatch],[Measures].[RankDenseSet],[Measures].[DenseRank]} on 0, 
non empty OrderedSet on 1 
from [Adventure Works DW2016CTP3] 
+0

這段代碼;是否僅按類別維度排序?然後我可以在'[Order]。[Category]。[Category] ​​.Members'?之後添加更多的維度嗎? –

+0

當然,你可以添加儘可能多的,你想要的。如果您可以更詳細地描述您的立方體結構以及您想要的結果,我可以編寫您需要的代碼。 –

+0

讓我們在Adventure Works數據庫上構建一個代碼。我也不確定存檔,因爲我只需要執行這個WEBI代碼的操作:'int RANK(measure [; ranking_dims] [; top | bottom] [; reset_dims])''。需要使用DAX或MDX創建。但是我認爲,這個表單說明了一些事情;按產品類別和子類別排序[訂購數量] –