본문 바로가기
데이터 분석 및 업무 자동화

Power BI DAX Patterns 불연속적 날짜에서 전 시점 대비 증감률 구하기 (FILTER, SELECTEDVALUE)

by 공부머리 2022. 4. 27.
반응형

Time intelligence를 이용하면 기간별 증감률을 쉽게 구할 수 있습니다. 하지만 날짜가 연속성이 없을 때는 어떻게 하면 될까요? FILTER, SELECTEDVALUE 등의 몇 가지 DAX 함수의 조합으로 가능한데 알아보겠습니다.

 

결과

  • 테이블 ‘날짜’ 열 : 테이블의 날짜열을 보면 날짜가 1월 1일, 1월 5일, 1월 6일, 1월 8일 등으로 불연속적입니다.
  • 테이블 ‘판매량’ 열 : 해당날짜의 판매량을 나타냅니다.
  • 테이블 ‘증감률’ 열 : 전 날짜를 기준으로 증감률을 구한 값이 나타납니다.
  • 증감률 차트 : 날짜를 X축, 증감률이 막대그래프, 판매량이 라인 차트로 나타낸 차트입니다.

주요 목표는 날짜가 불연속적임에도 불구하고 증감률을 전 시점 대비하여 구하는 것입니다.

 

결과 차트
대시보드

 

측정식

증감률을 구하는 DAX 측정식입니다.

  • PrevDate 변수 : 테이블에서 필터링된 해당 날짜보다 이전 날짜 테이블에서 가장 늦은 날짜를 필터링합니다. 즉, 직전 날짜를 반환합니다.
  • PrevSales 변수 : 직전 날짜에 해당하는 판매량을 구합니다.
  • ([판매량] - PrevSales) / PrevSales 식을 통해 증감률을 구하여 반환합니다.
증감률 = 
VAR PrevDate = 
    MAXX(
        FILTER(
            ALL(Data[날짜]),
            Data[날짜] < SELECTEDVALUE(Data[날짜])
        ),
        Data[날짜]
    )
VAR PrevSales = 
    CALCULATE(
        [판매량],
        FILTER(
            ALL(Data[날짜]),
            Data[날짜] = PrevDate
        )
    )
RETURN
    IF(
        PrevSales <> 0 && [판매량] <> 0,
        ([판매량] - PrevSales) / PrevSales
    )

 

 

관련 DAX 함수 설명 - SELECTEDVALUE

  • 설명 : 열이름의 컨텍스트가 하나의 고윳값으로 필터링된 경우 해당 값을 반환하는 함수입니다. 그렇지 않으면 대체 값을 반환합니다.
  • 구문 : SELECTEDVALUE(<columnName>[, <alternateResult>])
  • columnName : 기존 열을 나타내는 인수이며 식은 올 수 없습니다.
  • alternateResult(선택) : 고유값으로 필터링되지 않는 경우 반환되는 함수이며 지정되지 않으면 빈칸이 반환됩니다.

 

정리 소감

타임인텔리전스를 사용하지 않고 증감률을 구하고 싶을 때 활용할 수 있는 DAX Pattern입니다. SELECTEDVALUE, MAXX, FILTER, CALCULATE의 응용하는 방법도 배울 수 있는 기회였습니다.

반응형

댓글