티스토리 뷰

Microsoft Faric/Power BI

RANK, ROWNUMBER 함수

정홍주 2023. 4. 24. 08:00

 

RANK, ROWNUMBER 함수

 

4월 업데이트 버전에서는 RANK, ROWNUMBER 함수가 새롭게 등장했습니다. 그러나 샘플로 나온 DAX 수식을 사용하면 Power BI Desktop이 중지가 되면서 결과를 확인하기 어려웠습니다. 해당 수식은 다음과 같습니다.

RankByBirthDateSkip = RANK(SKIP, ALLSELECTED(DimCustomer), ORDERBY(DimCustomer[BirthDate]))

 

RANK 함수의 두 번째 매개변수는 ‘관계’로 반환되는 테이블에 해당됩니다. 현재 시점에서는 버그로 생각되며, 두 번째 매개변수에 테이블이 아닌 컬럼을 지정하면 됩니다. 현재 시점에서는 컬럼을 지정하지만, 향후에는 테이블로 지정될 수 있어 변경되면 다시 정리하겠습니다.

RANKDENSEBySales = RANK(DENSE, ALLSELECTED('고객'[성명]), ORDERBY('매출'[Total Sales],DESC))

RANKSKIPBySales = RANK(SKIP, ALLSELECTED('고객'[성명]), ORDERBY('매출'[Total Sales],DESC))

 

첫 번째 매개변수는 동점 처리를 어떻게 하냐는 것입니다.

ROWNUMBER 함수도 현재시점에서는 마찬가지로 테이블이 아닌 컬럼을 지정하면 됩니다.

RowNumberBySales = ROWNUMBER(ALLSELECTED('고객'[성명]), ORDERBY('매출'[Total Sales],DESC))

 

해당 결과를 한번 확인해보면 다음과 같습니다.

위 함수들의 매개변수에는 ORDERBY 뿐만 아니라, PARTITIONBY를 지원합니다.

필요한 컬럼을 SUMMARIZECOLUMNS으로 요약한 후 RANK, ROWNUMBER 함수를 이용하고 ORDERBY와 PARTITIONBY를 활용하시면 국가별 제품 상위 10개 제품 등을 처리하시기에 아주 효과적입니다.

댓글