학습 내용
1. STR() 함수와 문자열 함수 붙이기
STR([배송기간(시간)])+'시간 '+STR([배송기간(남은 분)])+'분'
- 문자열 함수를 붙일 때는 SQL과 동일하게 '+' 연산자 사용
2. LOD FIXED 함수
- <제품 대분류> 수준에서 매출의 합계를 구하고 싶을 때
{ FIXED [제품 대분류]:SUM([매출])}
- 고정하고 싶은 차원 : 집계하고 싶은 측정값
- 결국, <제품 중분류> 차원을 고려하지 않겠다는 말과 같으므로 EXCLUDE를 써도 동일한 결과가 나옴
3. LOD EXCLUDE 함수
{ EXCLUDE [제품 중분류]:SUM([매출])}
- 제외하고 싶은 차원 : 집계하고 싶은 측정값
4. LOD INCLUDE 함수
- 뷰에는 포함되어 있지 않는 차원이지만, 계산식에는 고려해서 집계하고 싶을 때 사용
- 주문 번호별 매출을 볼 때, '지역' 차원도 고려해서 보고 싶다면
{ INCLUDE [지역]:SUM([매출])}
- 열 선반에 <매출>과 <include>의 집계 수준을 둘 다 합계로 설정하면 차이가 없지만, 평균으로 설정하면 값이 달라짐
- 집계 수준을 합계로 설정하면 <매출>의 경우 각 주문 번호에 해당되는 모든 제품 코드의 매출의 합이 계산되고, <include>의 경우도 각 주문 번호 당 대응되는 지역이 하나이기 때문에 결국 동일한 값이 나옴
- 반면, 집계 수준을 평균으로 설정하면 <매출>의 경우 각 주문 번호 당 평균 매출(주문 번호 당 총 매출/제품 코드 수)이 계산되지만, <include>의 경우 각 지역 당 평균 매출이 계산되는데, 주문 번호와 지역은 하나씩 대응되므로 결국 합계로 집계한 것과 동일함
5. LOD FIXED 함수 응용
Q. 2014년에 처음 구매한 고객이 2017년 매출에 얼마나 기여하고 있을까?
{ FIXED [고객명] : MIN([주문 일자])}
- 화면에는 추가되어 있지 않지만, 고객별로 최초 구매일자를 알고 싶을 때 위와 같이 계산식을 작성할 수 있음
- 해당 그래프를 보면, 2014년에 처음 구매한 고객이 2017년에 73.62% 차지하고 있다는 것을 알 수 있음
6. 주문 번호 당 평균 매출
- 주문 번호 당 평균 매출을 구하고 싶은데, 위 사진처럼 <주문 번호> 차원이 화면에 포함되어 있을 때 말고 단순히 숫자 하나로만 표현하고 싶다면
{ INCLUDE [주문 번호]:SUM([매출])}
{ FIXED [주문 번호]:SUM([매출])}
- 위와 같이 계산식을 작성하고 집계 수준을 평균으로 바꾸면 672.762가 출력됨
- 이렇게 LOD 계산식을 사용하지 않고 단순히 <매출>의 집계 수준을 평균으로 설정하면, 주문 번호 당 매출의 평균이 아닌 전체 매출의 평균(332.467)이 출력됨
7. 패널별 순위 / 정렬
- 위와 같이 지역별 제품 중분류별 매출의 합계 그래프가 있다고 했을 때, <합계(매출)> 차원을 ctrl을 누른 채로 마크의 '세부 정보'로 이동
- 세부 정보에 추가하는 이유는, 뷰를 변화시키지 않으면서 추가적인 계산 또는 속성을 변경하기 위해서임
- 마우스 우클릭 > 불연속형으로 변경
※ 참고
- 초록색 : 연속형 / 파란색 : 불연속형
- 연속형 필드는 축을 생성하는 반면, 불연속형 필드는 머리글을 생성하고 만들어진 측정값을 분할하는 역할을 함
- 마우스 우클릭 > 퀵 테이블 계산 > 순위로 변경
- 해당 필드를 행 선반으로 옮겨 <지역>과 <제품 중분류> 사이에 넣음
- 순위가 계산되어 있긴 하지만 지역별로 순위가 아님
- 지역별로 순위를 보고 싶으면
- <합계(매출)> 필드에서 마우스 우클릭 > 다음을 사용하여 계산 > 패널(아래로)
- 만약, '매출의 순위' 열을 보고 싶지 않으면 합계(매출)> 필드에서 마우스 우클릭 > 머리글 표시 해제
8. RUNNING_MAX()
RUNNING_MAX(SUM([수익]))
- 분기별 수입의 합의 누계 최대값을 보여주는 함수
- 2014년 4분기부터 2016년 3분기까지의 최대값은 계속 동일하게 36,849.018임을 알 수 있음
**그 외의 태블로 RUNNING() 함수 참고
[테이블 계산] RUNNING( ) 함수
Primary 함수 중 | Primary 함수는 Primary 함수 내에 다른 함수가 포함된다. 예: RUNNING(SUM(Sales)) Primary 함수 TOTAL( ) PREVIOUS_VALUE( ) LOOKUP( ) RUNNING( ) WINDOW( ) 'RUNNING( )’과 관련된 함수는 총 5개가 있다. RUNNING_
brunch.co.kr
과제
1. 주식 데이터 - 전일 대비 종가 등락 여부 확인하기
1-1) 그래프 그리기
- '종가'를 행 선반에 가져다 놓고, 퀵 테이블 계산을 이용해서 차이를 구한 후, 계산 기준을 전일로 설정
- 테이블 계산식을 이용해 구해 놓은 종가를, 데이터 창으로 드래그 하면 새로운 측정값이 생성되고, 이름을 전일 대비 종가 등락으로 변경
- 전일 대비 종가 등락 > 마우스 우클릭 > 편집을 누르면 아래와 같은 식이 생성되어 있음
ZN(SUM([종가])) - LOOKUP(ZN(SUM([종가])), -1)
- ZN() 함수 : 괄호 안의 값이 NULL이 아니면 해당 값을 반환하고, NULL이면 0을 반환
- LOOKUP(식, [오프셋]) 함수 : 지정된 상대적 오프셋만큼 현재 행으로부터 떨어진 대상 행에서 주어진 식을 계산하여 그 값을 반환함. 대상 행을 결정할 수 없으면 NULL을 반환
- 등가 여부 색상을 표시하는 식은 다음과 같음
IF (SUM([종가])) - LOOKUP(ZN(SUM([종가])), -1) > 0 THEN "등락▲"
ELSEIF (SUM([종가])) - LOOKUP(ZN(SUM([종가])), -1) < 0 THEN "하락▼"
ELSE "동일-"
END
1-2) 워크시트 동작 시키기
- <코드명>에 따른 증권 정보 사이트로 이동할 수 있도록 동작 추가
2. 시도별 매출 구성 비율
- 서울특별시의 전국 대비 매출 구성비율은 22.13%지만, '수도권'으로 지역 필터를 걸면 46.82%로 변경됨
- 지역 필터를 적용하기 전에는 화면에 보이는 전체 시도에 대해 범위가 지정이 됐다면, 필터를 적용한 후에는 해당 지역에 포함된 '시도'에 대한 범위로 계산 범위가 바뀌게 되기 때문
- 즉, 필터 적용 전에는 서울특별시 매출 합계 / 전국 매출 합계 (TOTAL의 범위가 전국)로 구성비율이 구해졌다면,
필터 적용 후에는 서울특별시 매출 합계 / 인천,서울,경기도 매출 합계 (TOTAL의 범위가 수도권)로 계산됨 - 필터를 적용해도 전국 대비 매출 구성비율의 수치가 바뀌지 않게 하려면 LOD 계산식을 사용해야 함
2-1) LOD를 사용해 전국 기준 매출 구성 비율 구하기
- 전국 기준 매출 구성 비율을 구하기 전에, 전국 기준 매출을 FIXED를 사용해 아래와 같이 구함
{ FIXED [국가]: SUM([매출])}
- 전국 기준 매출 구성 비율은 전국 기준 매출을 사용해 다음과 같이 구할 수 있음
SUM([매출])/SUM([전국 기준 매출])
- 이렇게 작성하면 필터를 변경해도 값이 변하지 않음
3. 과거 고객 매출 기여도 & 신규 유입 고객 현황 분석
{ FIXED [고객명] : MIN([주문 일자])}
- 고객별 최초 구매일을 구하는 계산식은 위와 같음
- 고객별 최초 구매일을 '색상'에 두면 연도별로 과거 고객의 매출 기여도와 신규 고객의 유입 현황을 알 수 있음
4. 코호트 분석
4-1) 고객별 최초 재구매일 구하기
{ FIXED [고객번호] :
MIN(
IIF([고객별 최초 구매일]<[주문 일자], [주문 일자], NULL)
)}
- 앞서 만들었던 '고객별 최초 구매일'을 활용해 '고객별 최초 재구매일'을 구하는 계산식
- '고객별 최초 구매일'보다 후에 일어난 주문 중에서 가장 작은 값 = 즉, 두 번째로 구매한 날짜
4-2) 고객별 재구매 경과 기간
DATEDIFF('quarter', [고객별 최초 구매일], [고객 최초 재구매일])
- DATEDIFF 함수를 이용해 ‘quarter’기준으로 재구매가 일어나기까지의 시간 차이를 구함
- 열 선반 : 고객별 재구매 경과 기간 / 행 선반 : 년, 분기 / 색상 : 고객 번호 고유 카운트
'Data Visualization > 태블로' 카테고리의 다른 글
[태블로 신병 훈련소 20기] DAY 8 태블로 집합 분석의 이론과 실습 (0) | 2023.09.10 |
---|---|
[태블로 신병 훈련소 20기] DAY 7 도넛차트, 워터폴차트, 범프차트, 퍼널차트, 간트차트 (0) | 2023.09.06 |
[태블로 신병 훈련소 20기] DAY 5 다양한 맵 활용 (0) | 2023.09.01 |
[태블로 신병 훈련소 20기] DAY 4 테이블 계산식 (0) | 2023.09.01 |
[태블로 신병 훈련소 20기] DAY 3 매개 변수와 대시보드 동작 (0) | 2023.08.31 |