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

Power BI에서 코로나 확진자 7일 이동평균 구하는 두가지 방법 (DATESINPERIOD, VAR)

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

뉴스에 코로나 확진자 통계 데이터를 보면 일일 신규 확진자 데이터와 7일 이동평균 데이터를 보여줍니다. 일일신규확진자는 변동성이 큽니다. 변동성을 보정하고 추세를 보기 위해서 이동평균을 보조 지표로 봅니다. Power BI에서 어떻게 이동평균을 구할 수 있는지 DATESINPERIODVAR을 사용한 두 가지 방법을 정리해보겠습니다.

 

결과

먼저 대시보드로 만든 결과를 보겠습니다. 코로나 확진자가 급증한 22년 초를 기간으로 설정했습니다. 차트에서 일일 확진자는 녹색인데 튀는 부분이 있어 변동성이 확인됩니다. 7일 이동평균은 노란색입니다. 변동성이 제거되어 완만한 곡선을 그리고 있고 추세를 확인할 수 있습니다. 오른쪽 테이블은 각 날짜별 수치화된 데이터를 확인할 수 있습니다. DATESINPERIOD를 이용한 값과 VAR를 이용한 값 모두 동일하다는 것을 확인할 수 있습니다.  

대시보드
일일확진자 7일 이동평균 대시보드

 

 

이동평균 DAX 측정값

사전작업 (CALENDARAUTO)

 

DAX로 측정식을 만들기 전에 Calendar Table을 만들고 코로나 확진자 테이블과 연결해야 합니다. 날짜 테이블 만드는 방법은 아래 링크 포스팅을 참조하시기 바랍니다.

 

Power BI 시간 인텔리전스 사용을 위한 날짜 테이블 만들기 (CALENDAR, CALENDARAUTO)

 

Power BI 시간 인텔리전스 사용을 위한 날짜 테이블 만들기 (CALENDAR, CALENDARAUTO)

시간 인텔리전스는 Power BI DAX에서 매우 중요하고 강력한 기능입니다. 시간 인텔리전스 중에서 가장 기본이면서 출발점이 되는 CALENDAR와 CALENDARAUTO를 사용한 날짜 테이블 만들기에 대해서 살펴보

shareluck.tistory.com

 

방법1 (DATESINPERIOD)

먼저 DATESINPERIOD를 이용한 이동평균 구하는 방법입니다. 3단계의 DAX 식을 거쳐야 하니 하나씩 따라와 주세요.

 

먼저 일일 확진자 합계를 구해야 합니다. SUM함수를 사용하며 확진자현황 테이블의 new_cases열을 입력해주면 됩니다. 

일일확진자 =
SUM ( '확진자현황'[new_cases] )

 

다음으로는 일평균 확진자를 구하는 측정식을 만들어야 합니다. Calendar테이블 Date열의 각 행별 컨텍스트에 따라서 [일일 확진자]의 평균을 내라는 의미입니다. 

일평균확진자 =
AVERAGEX ( VALUES ( 'Calendar'[Date] ), [일일확진자] )

VALUES의 의미와 활용에 대해서 궁금하시다면 아래 링크 참조하시기 바랍니다.

Power BI DAX VALUES 함수 정리

 

Power BI DAX VALUES 함수 정리

Power BI DAX 중 VALUES 함수에 대해서 정리하겠습니다. VALUES는 열 이름 또는 테이블 이름을 매개변수로 입력받아 중복이 제거된 고윳값 열(테이블)을 반환하거나 중복 값이 유지된 테이블을 반환하

shareluck.tistory.com

 

마지막으로 DATESINPERIOD를 이용하여 7일 이동평균을 구하는 측정식을 만듭니다. Calendar 테이블 Date열을 날짜필터로 한 컨텍스트에서 해당 날짜의 7일 전까지 기간을 구합니다. 이 기간 동안의 일평균 확진자를 구한다는 의미입니다. 

7일이동평균(DATESINPERIOD) =
CALCULATE (
    [일평균확진자],
    DATESINPERIOD ( 'Calendar'[Date], SELECTEDVALUE ( 'Calendar'[Date] ), -7, DAY )
)

DATESINPERIOD 함수는 시작 날짜에서 설정된 기간 만큼 날짜 열 테이블을 반환하는 함수입니다. 좀 더 자세한 내용은 아래 링크 참고하시기 바랍니다.

Power BI DAX 기초 - Time Intelligence

 

Power BI DAX 기초 - Time Intelligence

Power BI DAX 중 Time intelligence에 대해서 정리해보려고 합니다. 타임 인텔리전스는 기간을 커스터마이징하여 비교하거나 계산이 가능하게 합니다. 이것을 이용하여 현재까지 실적 계산, 기간 shift, ru

shareluck.tistory.com

 

방법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에서 이동평균을 구하는 패턴을 알고 필요한 분석에 적용하면 효율적인 분석이 되겠습니다.

반응형

댓글