뉴스에 코로나 확진자 통계 데이터를 보면 일일 신규 확진자 데이터와 7일 이동평균 데이터를 보여줍니다. 일일신규확진자는 변동성이 큽니다. 변동성을 보정하고 추세를 보기 위해서 이동평균을 보조 지표로 봅니다. Power BI에서 어떻게 이동평균을 구할 수 있는지 DATESINPERIOD와 VAR을 사용한 두 가지 방법을 정리해보겠습니다.
결과
먼저 대시보드로 만든 결과를 보겠습니다. 코로나 확진자가 급증한 22년 초를 기간으로 설정했습니다. 차트에서 일일 확진자는 녹색인데 튀는 부분이 있어 변동성이 확인됩니다. 7일 이동평균은 노란색입니다. 변동성이 제거되어 완만한 곡선을 그리고 있고 추세를 확인할 수 있습니다. 오른쪽 테이블은 각 날짜별 수치화된 데이터를 확인할 수 있습니다. DATESINPERIOD를 이용한 값과 VAR를 이용한 값 모두 동일하다는 것을 확인할 수 있습니다.
이동평균 DAX 측정값
사전작업 (CALENDARAUTO)
DAX로 측정식을 만들기 전에 Calendar Table을 만들고 코로나 확진자 테이블과 연결해야 합니다. 날짜 테이블 만드는 방법은 아래 링크 포스팅을 참조하시기 바랍니다.
Power BI 시간 인텔리전스 사용을 위한 날짜 테이블 만들기 (CALENDAR, CALENDARAUTO)
방법1 (DATESINPERIOD)
먼저 DATESINPERIOD를 이용한 이동평균 구하는 방법입니다. 3단계의 DAX 식을 거쳐야 하니 하나씩 따라와 주세요.
먼저 일일 확진자 합계를 구해야 합니다. SUM함수를 사용하며 확진자현황 테이블의 new_cases열을 입력해주면 됩니다.
일일확진자 =
SUM ( '확진자현황'[new_cases] )
다음으로는 일평균 확진자를 구하는 측정식을 만들어야 합니다. Calendar테이블 Date열의 각 행별 컨텍스트에 따라서 [일일 확진자]의 평균을 내라는 의미입니다.
일평균확진자 =
AVERAGEX ( VALUES ( 'Calendar'[Date] ), [일일확진자] )
VALUES의 의미와 활용에 대해서 궁금하시다면 아래 링크 참조하시기 바랍니다.
마지막으로 DATESINPERIOD를 이용하여 7일 이동평균을 구하는 측정식을 만듭니다. Calendar 테이블 Date열을 날짜필터로 한 컨텍스트에서 해당 날짜의 7일 전까지 기간을 구합니다. 이 기간 동안의 일평균 확진자를 구한다는 의미입니다.
7일이동평균(DATESINPERIOD) =
CALCULATE (
[일평균확진자],
DATESINPERIOD ( 'Calendar'[Date], SELECTEDVALUE ( 'Calendar'[Date] ), -7, DAY )
)
DATESINPERIOD 함수는 시작 날짜에서 설정된 기간 만큼 날짜 열 테이블을 반환하는 함수입니다. 좀 더 자세한 내용은 아래 링크 참고하시기 바랍니다.
Power BI DAX 기초 - Time Intelligence
방법2 (VAR)
다음 방법은 VAR를 사용하여 구현한 것입니다. 마지막 CALCULATE 절을 보시면 위에서 구한 측정식과 유사한데 FILTER를 사용하여 7일 이동 구간을 구하여 VAR로 대입한 것입니다.
7일이동평균(VAR) =
VAR LastNewCaseDate = MAX('Calendar'[Date])
VAR AverageDays = 7
VAR PeriodInVisual =
FILTER(
ALL(
'Calendar'[Date]
),
AND(
'Calendar'[Date] > LastNewCaseDate - AverageDays,
'Calendar'[Date] <= LastNewCaseDate
)
)
VAR OUTPUT =
CALCULATE(
AVERAGEX(
'Calendar',
[일일확진자]
),
PeriodInVisual
)
RETURN
OUTPUT
정리 소감
이동평균을 구하면 변동성이 심한 데이터에서 변동성을 보정하고 추세를 볼 수 있음을 알았습니다. 또한 기간을 7일, 한 달, 두 달로 설정하여 측정값을 그래프로 그리면 골든크로스 데드크로스가 나타나는데 추세를 조금 더 기술적으로 판단할 수 있겠습니다. DATESINPERIOD와 VAR를 사용하여 Power BI에서 이동평균을 구하는 패턴을 알고 필요한 분석에 적용하면 효율적인 분석이 되겠습니다.
'데이터 분석 및 업무 자동화' 카테고리의 다른 글
Power BI DAX RANKX 그룹별 순위 구하기 (feat. 아파트 평단가 시도별 시군구별 순위) (0) | 2022.04.05 |
---|---|
Power BI DAX Pattern - 누적합계 구하는 방법 (Cumulative total) (0) | 2022.04.01 |
Power BI DAX 기초 - RELATED, USERELATIONSHIP, CROSSFILTER, TREATAS (0) | 2022.03.30 |
Power BI DAX 기초 - Time Intelligence (0) | 2022.03.29 |
Power BI DAX 기초 - ALL, ALLEXCEPT, ALLSELECTED (0) | 2022.03.28 |
댓글