원티드 프리온보딩 태블로(데이터) 챌린지 6월 DAY2 : 계산식
Day2는 Tableau의 계산식에 대한 내용이었다.
태블로의 계산식에서는 행과 집계의 차이에 대해서 이해해야한다. 태블로에서는 자동으로 측정값 집계가 되어있는데 이는 측정값 집계가 풀려있을 때와는 차이를 보인다.
✔️ 행 수준의 계산식
- 모든 행에 대해 계산 수 결과값을 집계
- [수익] / [매출]
- 모든 행에 대해 결과 값이 실체와되기 때문에 처리 로직을 다시 실행할 필요가 없음
✔️ 집계 수준 계산식
- 각 필드 값을 집계한 후에 계산
- SUM([수익]) / SUM([매출])
- View에 사용된 차원에 따라 집계값이 달라지기 때문에 Tableau 데이터 추출에서 실체화 될 수 없음
이 두 차이때문에 많이 발생하는 오류가 바로 '집계 인수 및 집계되지 않은 인수를 이 함수와 혼합할 수 없습니다.' 라는 계산식 작성시 발생된는 오류이다. 계산식에서 집계 인수는 집계 인수 끼리, 집계되지 않은 인수는 집계되지 않은 인수끼리만 계산이 가능하다.
측정값 집계 여부 차이
예를 들어보자면 아래는 각 연도별로 고객의 수를 막대그래프로 나채낸 것이다. 왼쪽은 측정값 집계가 걸려있고, 오른쪽은 풀려있는 상태이다. 두 그래프의 차이를 보자면 우선 막대 양상은 비슷하지만 값 자체에는 차이가 있다. 왼쪽은 각 연도별 총 고객수를 count 한다. 이때 중복 없이 고유값을 계산하기 때문에 2019년 기준 732명으로 계산이 된다. 반면에 오른쪽은 연도별로 동명 고객이 몇명 있는지를 count 하고 이 count 값을 쌓아 둔 것이기 때문에 2019년 기준 3500이 넘는 값을 보이고 있다. 결과적으로 왼쪽은 '중복되지 않은 사람 수', 오른쪽은 '중복을 포함한 사람 수' 라는 차이를 보인다.
계산식에서 집계된 값과 집계되지 않은 값의 차이
또한 계산식에서 집계된 값의 계산식과 집계되지 않은 계산식을 비교해보자. 아래의 '수익률 - 행수준'의 계산식은 [매출] / [수익] 으로 집계되지 않은 계산식이고 '수익률 - 집계 수준'의 계산식은 SUM([매출]) / SUM([수익]) 으로 집계된 계산식이다. 결과적으로 값을 보면 차이가 보인다. '행수준'의 값은 가구 기준 20717.80%인데 반해 '집계 수준'은 9.04%이다. 이는 상식적으로 '집계수준'이 맞다고 할 수 있는데, 차이가 발생 하는 이유는 측정값에서 확인 할 수 있다.
측정값에서 확인해보면 '행수준'의 계산은 '합계', '집계 수준'은 '집계'으로 차이가 발생한다. 데이터를 열어보면 더 확실하게 확인이 가능한데, '행수준'은 각 행에서 계산을 하고 이 계산된 수익률을 제품 대분류 기준으로 모두 합친 값인 것이다. '집계 수준'은 제품 대분류 기준으로 모든 매출을 합한값을 수익의 합계로 나누어 계산된 것이기 때문에, 제품 대분류 기준으로 수익률을 계산 한다고 하면 '집계 수준'의 수익률이 맞는것이다.
위에서 확인한것 처럼 집계 여부에 따라 값이 매우 달라질 수 있으므로 어떠한 결과를 원하느냐에 따라 확실하게 구분하여 적용하면 된다!