BI & Visualization/Power BI

Power BI | RANK(), RANKX()

올리브한입 2025. 4. 2. 02:20
반응형

RANK()

RANK 함수는 특정 제품의 매출에 대해 순위를 계산할 때 사용됩니다. 주로 단일 값을 비교할 때 사용되며, 행 수준에서 순위를 계산할 때 사용됩니다.

RANK ( 
    [<ties>], 
    [<relation> or <axis>], 
    [<orderBy>], 
    [<blanks>], 
    [<partitionBy>], 
    [<matchBy>], 
    [<reset>]
)

[<ties>]: 동일한 값에 대해 순위를 어떻게 매길지를 정의합니다.

  • DENSE: 동점인 항목에 대해 같은 순위를 매기고, 그 이후 순위를 건너뛰지 않습니다. (예: 1, 1, 2)
  • SKIP(기본값): 동점인 항목에 대해 같은 순위를 매기고, 그 이후 순위는 건너뜁니다. (예: 1, 1, 3)

[<relation> or <axis>]: 순위를 매길 기준이 되는 데이터 열입니다. 예를 들어, SalesAmount 같은 열을 사용할 수 있습니다.

[<orderBy>]: 순위를 매길 데이터를 정렬할 기준을 정의합니다. 예를 들어, DESC(내림차순) 또는 ASC(오름차순)을 사용하여 데이터를 정렬할 수 있습니다.

[<blanks>]: 빈 값이 있을 때 어떻게 처리할지를 정의합니다. 기본값은 IGNORE이며, 빈 값은 무시됩니다.

  • IGNORE: 빈 값을 무시합니다.
  • FIRST: 빈 값에 대해서 첫 번째 순위를 부여합니다.
  • LAST: 빈 값에 대해서 마지막 순위를 부여합니다.

[<partitionBy>]: 순위를 매길 범위를 나누는 필드를 지정합니다. 예를 들어, 특정 그룹(예: CalendarYear 또는 ProductCategory) 내에서 순위를 매기고 싶을 때 사용합니다. 여러 개의 열을 지정하여 범위를 세분화할 수 있습니다.

[<matchBy>]: 순위를 매길 데이터의 값이 아닌 다른 값을 기준으로 동일한 순위로 매길지를 정의합니다. 이 인수는 선택사항으로, 주로 RANKX와 결합하여 사용됩니다.

[<matchBy>]: 순위를 매길 데이터의 값이 아닌 다른 값을 기준으로 동일한 순위로 매길지를 정의합니다. 이 인수는 선택사항으로, 주로 RANKX와 결합하여 사용됩니다.

SalesRankWithinYear = 
RANK(
    DENSE, 
    ORDERBY([SalesAmount], DESC), 
    PARTITIONBY([CalendarYear])
)

이 식은 SalesAmount를 기준으로 CalendarYear마다 각 연도별로 매출 순위를 매깁니다. 

RANKX()

RANKX(
    <table>,             -- 순위를 계산할 테이블
    <expression>,        -- 순위를 매길 기준이 되는 표현식
    <value>,             -- 순위가 매겨질 값을 선택 (선택사항)
    <order>,             -- 순위를 매길 순서 (선택사항)
    <ties>               -- 동점 처리 방식 (선택사항)
)

RANKX 함수는 주어진 테이블에 대해 특정 표현식을 기준으로 순위를 매기는 DAX 함수입니다. 이 함수는 각 항목에 대해 순위를 계산하고, 결과 테이블에서 각 항목의 순위를 반환합니다.

 

  • <table>: 순위를 매길 테이블을 지정합니다. 이 테이블의 각 행에 대해 RANKX가 순위를 계산합니다.
  • <expression>: 순위를 매길 기준이 되는 값이나 계산식입니다. 예를 들어, 각 제품의 판매량이나 매출액 등을 기준으로 할 수 있습니다.
  • <value> (선택 사항): 특정 값을 기준으로 순위를 매길 수도 있습니다. 이 값이 제공되면 expression에서 계산된 값을 기준으로 순위가 매겨집니다.
  • <order> (선택 사항): 순위를 매기는 순서를 지정합니다. 기본값은 내림차순(DESC)이며, ASC로 변경하여 오름차순으로 순위를 매길 수도 있습니다.
    • ASC: 오름차순으로 순위 계산
    • DESC: 내림차순으로 순위 계산
  • <ties> (선택 사항): 동점 항목을 처리하는 방식을 지정합니다.
    • SKIP: 동점 항목이 있을 경우, 동일한 순위를 매기고 그 다음 순위는 건너뛰기
    • DENSE: 동점 항목이 있을 경우, 동일한 순위를 매기고 그 다음 순위도 연속적으로 매기기 (예: 1, 1, 2, 3)
    • MIN: 동점 항목이 있을 경우, 첫 번째 값에 순위를 매기고 그 후 값을 연속적으로 매기기
    • MAX: 동점 항목이 있을 경우, 마지막 값에 순위를 매기고 그 후 값을 연속적으로 매기기
= RANKX(
    ALL(Products),                                  -- Products 테이블에서 모든 필터를 제거
    SUMX(RELATEDTABLE(InternetSales), [SalesAmount]) -- 각 제품별로 관련된 InternetSales 테이블의 매출 합계를 계산
)

 

RELATEDTABLE(InternetSales) Products 테이블과 InternetSales 테이블이 관계를 맺고 있다고 가정했을 때, 각 제품에 대해 해당 제품에 관련된 InternetSales 테이블의 모든 행을 반환합니다. RANKX Products 테이블에 있는 모든 제품에 대해 InternetSales 테이블의 매출 합계를 계산하고, 그 매출을 기준으로 순위를 매깁니다. 예를 들어, Bike의 총 매출이 10,000이라면, RANKX Bike의 순위를 1로 매깁니다. Shoes가 두 번째로 높은 매출을 가질 경우 Shoes는 2위가 됩니다.

 

 

 

반응형