데이터 분석을 진행하다 보면, 모든 팀이나 부서가 동일한 기간 동안의 데이터를 제공하지 않는 경우가 많습니다.
예를 들어, 일부 팀은 특정 월까지의 데이터를 제공하고, 다른 팀은 그보다 더 최신 데이터를 제공하는 경우가 있습니다.
이 경우, 전체 데이터를 분석할 때 최신 데이터가 없는 팀의 데이터를 보정해 사용해야 하는 상황이 발생할 수 있는 것이지요, 오늘은 이러한 상황에서 데이터를 보정하는 방법과 이를 DAX를 활용하여 처리하는 방법을 설명하겠습니다.
예시 데이터: A,B,C,D팀의 매출량
아래의 데이터 예시를 보면 C팀은 10월 이후의 매출량이 NULL이고 D팀은 11월 이후의 매출량이 NULL인 상황입니다.
팀 | 날짜 | 매출 |
A팀 | 2023-01 | 95,000 |
A팀 | 2023-02 | 98,000 |
A팀 | 2023-03 | 100,000 |
A팀 | 2023-04 | 102,000 |
A팀 | 2023-05 | 105,000 |
A팀 | 2023-06 | 110,000 |
A팀 | 2023-07 | 115,000 |
A팀 | 2023-08 | 118,000 |
A팀 | 2023-09 | 120,000 |
A팀 | 2023-10 | 122,000 |
A팀 | 2023-11 | 125,000 |
A팀 | 2023-12 | 130,000 |
B팀 | 2023-01 | 80,000 |
B팀 | 2023-02 | 82,000 |
B팀 | 2023-03 | 85,000 |
B팀 | 2023-04 | 87,000 |
B팀 | 2023-05 | 90,000 |
B팀 | 2023-06 | 92,000 |
B팀 | 2023-07 | 94,000 |
B팀 | 2023-08 | 96,000 |
B팀 | 2023-09 | 97,000 |
B팀 | 2023-10 | 98,000 |
B팀 | 2023-11 | 100,000 |
B팀 | 2023-12 | 105,000 |
C팀 | 2023-01 | 70,000 |
C팀 | 2023-02 | 72,000 |
C팀 | 2023-03 | 75,000 |
C팀 | 2023-04 | 78,000 |
C팀 | 2023-05 | 80,000 |
C팀 | 2023-06 | 82,000 |
C팀 | 2023-07 | 84,000 |
C팀 | 2023-08 | 86,000 |
C팀 | 2023-09 | 88,000 |
C팀 | 2023-10 | NULL |
C팀 | 2023-11 | NULL |
C팀 | 2023-12 | NULL |
D팀 | 2023-01 | 85,000 |
D팀 | 2023-02 | 88,000 |
D팀 | 2023-03 | 90,000 |
D팀 | 2023-04 | 92,000 |
D팀 | 2023-05 | 95,000 |
D팀 | 2023-06 | 98,000 |
D팀 | 2023-07 | 100,000 |
D팀 | 2023-08 | 103,000 |
D팀 | 2023-09 | 105,000 |
D팀 | 2023-10 | 108,000 |
D팀 | 2023-11 | NULL |
D팀 | 2023-12 | NULL |
이 때 단순히 SUM으로만 계산하게 되면 다음과 같은 결과치를 보여주게 됩니다.
다음과 같이 팀 별로 빈 부분이 생기고, 전 4팀의 합계치도 줄어들게 됩니다.
❕DAX를 이용해 최신 데이터가 없는 경우 자동으로 가장 최신 데이터를 보여주는 법
다음과 같은 DAX 계산식을 통해 최신 데이터가 없는 경우에는 가장 최신 데이터를 보여줄 수 있습니다.
Adjusted Revenue =
VAR CurrentTeam = SELECTEDVALUE('테이블'[팀])
VAR CurrentDate =
CALCULATE(
MAX('테이블'[날짜]),
FILTER(
ALL('테이블'),
'테이블'[팀] = CurrentTeam && NOT(ISBLANK('테이블'[매출]))
)
)
VAR LastAvailableRevenue =
CALCULATE(
SUM('테이블'[매출]),
'테이블'[날짜] = CurrentDate,
'테이블'[팀] = CurrentTeam
)
RETURN
if(isblank(sum('테이블'[매출])),LastAvailableRevenue,sum('테이블'[매출]))
1. CurrenTeam = 각 팀별 계산을 위해 사용합니다.
2. CurrentDate = 각 테이블 당 가장 최근의 날짜를 팀 별 그리고 매출의 기입 여부에 따라 다르게 표시합니다. 예를 들어, 팀A의 경우는 가장 최근의 날짜인 2023년 12월이, 팀D의 경우에는 2023년 10월이 표시됩니다.
3. LastAvailableRevenue = 위의 두 variable을 중심으로 해 가장 최근의 매출을 구합니다.
이 세 가지 Variable을 이용해서 return 값을 완성 시킬 수 있습니다.
RETURN
: IF의 구문을 사용해, 매출이 NULL인 경우네느 최근의 매출값을, 아닌 경우에는 주어진 매출값을 보여주도록 합니다.
이를 통해 다시 구한 Adjusted Revenue 는 다음과 같습니다.
아래의 표 처럼 예전에는 비어있던 매출의 값이 가장 최근의 매출 값으로 채워진 것을 볼 수 있습니다.
하나의 DAX 계산식을 통해 간단하게 계산식을 보정할 수 있습니다.
오늘은 데이터가 일정하게 제공되지 않았을 때에 DAX를 이용해 데이터를 보정해 보여주는 방법에 대해 알아보았습니다.
간단한 DAX 계산식 하나로 문제를 해결 할 수 있으니 편리하고 좋지 않나요?
다음 시간에도 좀 더 편리한 DAX 계산으로 돌아오겠습니다.
감사합니다!
'POWER BI' 카테고리의 다른 글
[POWER BI/파워비아이] DATESBETWEEN 이해하기 (0) | 2025.04.14 |
---|---|
[POWER BI/파워비아이] 매개 변수 활용법: 완벽 가이드 (0) | 2025.03.31 |
[POWER BI/파워비아이] GLIDE PATH 시각화 보고서 완성하기 (0) | 2025.03.24 |
[POWER BI/파워비아이] 누적 목표 대비 실적 분석표 GLIDE PATH - RUNNING SUM 만들기 (0) | 2025.03.17 |
[POWER BI/파워비아이] 수치를 그룹화하여 차트에 표현하기 (0) | 2025.03.03 |