2017-01-23 1 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 db에서 코드를 작성해 보겠습니다. 나는 또한이 WEBI 코드가하는 일을하기 만하면되기 때문에 확실하지 않다.'int RANK (measure [; ranking_dims] [; top | bottom] [; reset_dims])'. DAX 또는 MDX로 ​​동일하게 작성해야합니다. 하지만 제 생각에이 공식은 다음과 같이 말합니다. 순위 [주문량] 제품 카테고리 및 하위 카테고리별로 정렬 –