본문 바로가기

Power BI/Power BI 정복하기

DAX함수 이동연간매출 측정값

* 참고: 빨간색 표기는 여러분의 테이블명과 열명, 측정값이름, 변수이름을 사용합니다. 

 

조직의 실적 분석은 흔히 전년대비성장률 또는 목표대비달성률을 분석합니다.

그러나 전년동기와 당해를 비교하는 것만으로는 시즌별 변동성이나 장기적인 추세를 파악하는 데 한계가 있습니다. 

 

이런 경우 연간합산매출을 1월 ~ 12월 또는 회계연도로 집계하지 않고 당월부터 1년간의 매출을 집계해서 분석해 볼 수 있습니다. 

 

이 측정값에는 DATEINPERIOD함수를 사용할 것입니다. 

DATEINPERIOD는 특정 기간에 해당하는 날짜를 반환합니다.

이 함수는 시계열 데이터 분석에서 매우 유용하며,

특히 이동 평균, 누적 총계, 혹은 기간별 비교 분석에 자주 사용됩니다.

 

DATESINPERIOD(<날짜 컬럼>, <시작 날짜>, <기간 수>, <기간 단위>)

  • <날짜 컬럼>: 분석할 날짜 컬럼입니다. 날짜는 반드시 연속적이어야 하기 때문에 캘린더 테이블의 날짜 컬럼을 사용하는 것이 좋습니다. 
  • <시작 날짜>: 분석을 시작할 날짜입니다. 
  • <기간 수>: 분석할 기간의 수입니다. 
  • <기간 단위>: 일(day), 월(month), 분기(quarter), 년(year) 중 하나를 기간 단위로 지정합니다.

아주 간단하게 오늘로부터 지난 1년 동안의 매출 합계를 계산하려면 이렇게 작성할 수 있죠.

 

Total Sales Last Year = 
CALCULATE(
    SUM(Sales[Amount]),
    DATESINPERIOD(Sales[Date], TODAY(), -1, YEAR)
)

 

다양한 기간에 대해서 이동연간매출을 집계하려면 이렇게 쓸 수 있습니다. 

이동연간매출 =
IF(
    [DATEVALUE_YN],
    CALCULATE(
        [매출액],
        DATESINPERIOD(
            'Calendar'[Date],
            MAX( 'Calendar'[Date] ),
            -1,
            YEAR
        )
    )
)

 

(잠깐! IF함수와 IF함수의 논리식에 사용한 측정값 [DATEVALUE_YN]의 용도는 여기 글에서 확인하세요.

https://d365-powerbi.tistory.com/34)

 

DATESINPERIOD의 시작날짜를 Today()가 아닌 MAX(  'Calendar'[Date] )로 변경하면

현재 차트의 필터 컨텍스트에 전달된 날짜 중 가장 마지막 날짜,

즉 차트가 3월에 해당하는 내용이라면 3월 31일로부터 이전 1년에 대한 날짜를 반환하게 됩니다. 

 

따라서 월별로 차트를 그리면 항상 그 달을 기준으로 이전 1년에 대한 연간 매출 합계 값을 얻을 수 있습니다.