RANK, ROWNUMBER 함수
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개 제품 등을 처리하시기에 아주 효과적입니다.