brunch

You can make anything
by writing

C.S.Lewis

by Cheon Dec 23. 2016

[테이블 계산] PREVIOUS_VALUE( ) 함수

Primary 함수 중

Primary 함수는 Primary 함수 내에 다른 함수가 포함된다.


예: PREVIOUS_VALUE(SUM(Sales))  



Primary 함수

TOTAL( )

PREVIOUS_VALUE( )

LOOKUP( )

RUNNING( )

WINDOW( )





     1. PREVIOUS_VALUE( )는 무엇인가?

‘PREVIOUS_VALUE( )’ 는 파티션(계산할 범위/그룹)의 첫번째 행에 대해서는 ‘( )’ 안의 값을 반환하고, 나머지 행에 대해서는 그 전의 행으로부터의 계산식 또는 값을 반환한다.


예를 들어보자.


◆ 계산된 필드에서 아래와 같은 수식을 작성하자.




◆ 위 수식(‘PREVIOUS_VALUE(1)’)을 열에 드래그하자.

◆ ‘Region’을 행으로 드래그하고, 색상에 드래그하자.


모든 Region의 값이 1이다. 왜 그럴까?


위에서 정의한 대로, 첫번째 행(‘Central’)에 대해서는 PREVIOUS_VALUE(1)의 ‘( )’ 안의 값, 

즉, ‘1’을 반환한다.


나머지 행에 대해서는 그 전의 행으로부터의 계산식 또는 값을 반환한다. 여기서 그 전의 행(‘Central’)의 값은 ‘1’ 이므로, 다음행(‘East’)의 값은 1이고, ‘East’의 값이 1이니까, ‘South’의 값 또한 1이 된다.




또 다른 예를 들어보자.



◆ 계산된 필드에서 아래와 같이 수식을 작성하자.


◆ ‘Profit’과 위 수식('SUM([Profit]) + PREVIOUS_VALUE(0)’)을 열에 드래그하자.

◆ ‘Region’을 행으로 드래그하고, 색상으로 드래그하자.


왼쪽 그래프는 각 ‘Region'의 ‘Profit'이다. 그러나, 오른쪽 그래프는 ‘Profit'에 ‘PREVIOUS_VALUE(0)’을 더했다.


오른쪽 그래프를 보면, 첫번째 행(‘Central’)에 대해서는 ‘Central’의 SUM(Profit) + ‘PREVIOUS_VALUE(0)’의 값이 반환되는데, ‘Central’의 'SUM(Profit)’의 값(=$39,706) + ‘PREVIOUS_VALUE(0)’의 값(=0)이 반환되는 것이고, 즉, $39,706의 값이다.



두번째 행(‘East’)에 대해서는 

‘East’의 SUM(Profit) + ‘PREVIOUS_VALUE(0)’의 값이 반환되는데, 여기서 'SUM(Profit)’의 값은

‘East’의 'SUM(Profit)’이고, ‘PREVIOUS_VALUE(0)’의 값은 그 전의 행(‘Central’)으로부터의 계산식 또는 값, ‘Central’의 행의 값이다. 

다시 말하면, ‘East’의 'SUM(Profit)’ + ‘Central’의 행의 값 = $91,523 + $39,706 = $131,229 이다.


세번째 행과 마지막 행도 위와 같은 방식으로 더해지기 때문에 'SUM(Profit)' + ‘PREVIOUS_VALUE(0)’은 ‘Profit'의 누계 합계와 같다.





2. PREVIOUS_VALUE( )는 언제 사용할 수 있을까?



매년 성장률에 따른 점수를 매겨보는 예제를 들어보자. 2013년의 점수를 100으로 놓고, 

이를 기준으로 다음 해의 성장률에 따른 다음 해의 점수를 매겨보는 계산을 할 때, ‘PREVIOUS_VALUE( )’를 사용할 수 있다.


날짜와 성장률을 포함한 엑셀데이터를 태블로에 가져왔다.


2013년의 점수를 100으로 놓고, 이를 기준으로 다음 해의 성장률에 따른 다음 해의 점수를 매겨보는 계산을 할 때


◆ 아래와 같은 수식을 작성해보자.


여기서 알아야 할 함수가 ‘IFNULL( )’이다.

'IFNULL(식1,식2 )’이면, null이 아니면 식1을 반환하고, null이면 식2를 반환하는 함수이다.



그렇다면 위 수식은 의미는 무엇일까?


◆ 위 수식(‘점수’)을 ‘측정값’ 박스 안으로 드래그하여, 테이블을 만들어보자.


위 테이블과 수식을 같이 보면서 이해해보자.


우선, 첫번째 행(‘2013’)에 대해서는 

'PREVIOUS_VALUE(IFNULL(1+(SUM([성장률])),100))*IFNULL(1+SUM([성장률]),1)’의 값이 반환되는데, 첫번째 행의 성장률이 없으므로(=NULL), 첫번째 행에 대한 값은 100*1 = 100이다.


두번째 행(‘2014’)에 대해서는 

'PREVIOUS_VALUE(IFNULL(1+(SUM([성장률])),100))*IFNULL(1+SUM([성장률]),1)’의 값이 반환되는데, 두번째 행의 'PREVIOUS_VALUE(IFNULL(1+(SUM([성장률])),100))’의 값은 그 전의 행의 값(‘2013’), 100이고,

'IFNULL(1+SUM([성장률]),1)’의 값은, 두번째 행의 성장률이 있으므로(=null이 아니므로), ‘1+1%’이다.

즉, 두번째 행의 값은 100*(1+1%) = 101이다.


세번째 행(‘2015’)과 마지막 행(‘2016’) 또한 같은 방식으로 계산된다.




위의 예제처럼, 성장률에 따른 점수를 계산할 때 사용되었지만,


‘PREVIOUS_VALUE( )’의 개념을 이해한다면, 다른 목적으로도 사용될 수 있을 것이다.

매거진의 이전글 [테이블 계산] TOTAL( ) 함수
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari