2023/08/04
이전 내용~
2023.08.03 - [LG 헬로비전 DX DATA SCHOOL/Tablea'u] - Tableau 입문 2
Tableau 입문 2
2023/08/03 Tableau 입문에 이어 두번째 시간을 시작해 보겠습니다! 2023.08.02 - [LG 헬로비전 DX DATA SCHOOL/Tableau] - Tableau 입문 Tableau 입문 2023-08-02 **Tableau 1. 태블로 사용시 필요할 수 있는 Excel 파일으 공유
dxdata.tistory.com
이어서 진행 하겠습니다.
1. 시트 가져오기
1.1) Car for tableau.xlsx
1.2) 여러 개의 시트를 가져와서 JOIN
- 여러 개의 시트를 가져와서 조인을 할 때 양쪽 시트에 동일한 이름의 피드가 존재하면 자동으로 JOIN을 해주고 동일한 이름의 필드가 존재하지 않으면 직접 필드를 설정(2개의 필드의 자료형이 일치해야 하는데 차원이나 측정 값의 형태가 같으면 됩니다.)
각 시트의 조인
2. Quick Table 계산
- 데이터 시각화에 필요한 계산식(누계 / 구성 비율 / 순위 / 전년 대비 성장률 등)을 빠르게 적용할 수 있는 태블로 기능
측정 값을 가지고 하기도 하고 계산된 필드를 만들어서 적용하기도 합니다.
- 실습
Price * Quantity 수식을 갖는 매출액 필드를 생성 -> 파생(Derived - 상속) 필드
상위 클래스 - super class, based class
하위 클래스 - sub class, derived class
데이터의 속성(필드)에서 파생 필드는 물리적으로 존재하지 않고 필요에 따라 다른 속성을 이용해서 생성 가능한 속성
이 속성이 자주 사용된다면, 이 속성은 DB에 미리 만들어 두기도 함.
조회 속도를 높이기 위해서이고 이러한 작업을 반정규화 or 역정규화라고 한다.
매출액과 Order Date 를 이용해서 누적 막대 차트 생성
마크 카드에서 유형을 막대로 수정
행 선반에 매출액을 배치
열 선반에 Order Date를 배치하고 년 월 연속형으로 변경
[합계(매출액)] 메뉴를 클릭하고 퀵테이블 메뉴에서 누계를 선택
3. 개별 / 단일 / 이중 측
- 여러 측정 값을 어떻게 하나의 뷰에서 볼 것 인지 결정
3.1) 개별 축 : 측정 값 필드들을 개별의 축으로 뷰에 표시 - 각각 표시
- 마크 카드 유형을 라인으로 변경
- 열에 Order Date를 배치하고 연속형 년 월로 변경
- 행에 [Quantity] 와 [Age]를 각각 배치한 후 Age의 측정값을 평균으로 변
3.2) 단일 축 : 측정 값 필드들을 하나의 뷰에 표시
- 선반에 측정 값을 배치할 때 축에 겹쳐 놓으면 됩니다.
- 하나의 축을 가지고 2개의 필드를 출력
3.3) 이중 축 : 축이 2개
- 왼쪽과 오른쪽에 축이 생김
- 두번째 필드를 선반에 놓을때 마우스 우 클릭을 하여 이중 축을 선택해주면 된다.
3.4) 2개의 필드를 하나의 그래프에 표현하고자 할 때
- 2개의 필드 값이 유사한 경우는 단일 축을 사용해도 되지만 그렇지 않은 경우는 이중 축을 사용해야 합니다.
2개의 추세를 비교하고자 하는 경우는 반드시 이중 축을 사용해야 합니다.
데이터 편집이 가능하다면 표준화, 정규화를 수행하여 비교를 해야함.
4. 기본 함수
4.1) 숫자 함수
- ABS
- MAX/MIN
- ZN : NULL 이면 0을 반환하고 그렇지 않으면 식 반환 - ZN([매출액]) : 매출액이 NULL 이면 0 그렇지 않으면 매출액
프로그래밍 언어는 대부분의 경우 NULL 과 연산을 하면 예외를 발생시킴
데이터베이스는 NULL과 연산하면 NULL을 제외하던가 연산의 결과를 NULL로 리턴합니다.
데이터베이스에서 평균을 직접 구하고자 하는 경우 SUM(컬럼이름) / COUNT(*) 로 구하는 것은 잘못된 결과를 가져올 수 있습니다.
- ROUND
소수가 나오는 경우는 적절한 위치에서 반올림을 해주어야 합니다.
4.2) 문자 함수
- LEFT/RIGHT : 왼쪽이나 오른쪽에서 필요한 만큼 잘라내서 리턴하는 함수
- LEN : 문자의 개수 리턴
- LOWER/UPPER
- REPLACE
- CONTAINS
- SPLIT
4.3) 날짜 관련 함수
- DATEADD : 단위, 수치, 날짜를 매개변수로 받아서 날짜에 수치에 단위를 적용한 만큼 더해주는 함수
DATEADD('MONTH', 2, #2023-08-04) : 2023-10-04
- DATEDIFF : 단위와 날짜 2개를 매개변수로 받아서 2개 날짜의 차이를 구해줍니다.
쇼핑몰에서는 이 함수를 이용해서 주문 후 실제 배송받는데 걸리는 시간이나 고객의 재구매 간격 등을 알고자 할 때 이용
- DATENAME : 단위와 날짜를 매개변수로 받아서 단위에 해당하는 부분을 문자열로 리턴
- YEAR, QUATER, MONTH, WEEK, DAY : 단위 없이 날짜만 매개변수로 받아서 해당하는 부분을 리턴
- TODAY, NOW : 현재 날짜 및 시간을 리턴
- MAX, MIN 사용 가능
날짜 및 시간을 숫자로 간주하기 때문
추세선은 측정 값에만 사용할 수 있는데 날짜 및 시간의 경우는 데이터를 읽어올 때는 차원으로 읽어오지만 추세선에 사용이 가능
4.4) 변환 함수
- DATE
- DATETIME
- FLOAT
- INT : 소수 부분은 반올림하지 않고 버림
INT(1.7) => 1
- STR
4.5) 논리 함수
- IF ~ ELSEIF ~ ELSE
- IFNULL(식1, 식2): 식1이 NULL이 아니면 식1 NULL이면 식2를 리턴
- ISNULL(필드 나 계산식) : NULL 포함 여부를 리턴
4.6) 집계함수
- COUNT
- COUNTD : 고유한 데이터의 건수
- SUM
- AVG
- MAX/MIN
- STDEV
- VAR
- ATTR : 데이터가 1개의 값인지 여부를 리턴
4.7) 테이블 계산 함수
- INDEX : 인덱스 리턴
- RANK : 동일 값은 동일 순위, 이 경우 다음 순위는 건너띔
- RANK_DENSE : 동일 값은 동일 순위, 이 경우 다음 순위는 건너띄지 않
- RANK_MODIFIED : 동일한 값은 동일한 순위를 리턴할 때 낮은 순위를 부여
- RANK_UNIQUE : 동일한 순위를 만들지 않음
- RUNNING_AVG : 누적 평균
- RUNNING_SUM
- RUNNING_MAX/MIN
- RUNNING_COUNT
- TOTAL : 전체 합계 - SUM은 근본적으로 그룹 별 합계
4.8) 실습
- Order_Date 가 2020년 과 2021년이 있는데 2020 년 대비 2021년 매출액의 성장률을 계산
SUM(IF YEAR([Order Date]) = 2021 THEN ([매출액]) END) /
SUM(IF YEAR([Order Date]) = 2020 THEN ([매출액]) END)
- Brand 별 인당 구매 금액 알아보기
인당 구매 금액을 알아보기 위해서 AVG([구매금액])를 사용하면 이 결과는 하나의 거래당 구매금액의 평균
SUM([구매금액]) / COUNTD([회원번호])
이 시트에서는 인당 구매 금액 : SUM([매출액]) / COUNTD([Mem No])
행에 Brand를 배치하고 인당 구매 금액을 마크 카드의 텍스트에 배치
- 모델 별 매출액 순위
매출액 순위 : RANK_UNIQUE(SUM([매출액]))
5. LOD 함수
5.1) 종류
- Fixed : 지정된 차원을 기준으로 집계 - {Fixed[Brand] : SUM([매출액])}
- Include : 지정된 차원 + 뷰 차원 기준 측정값 집계 - {Include[Brand] : SUM([매출액])}
- Exclude : 지정된 차원이 뷰에 존재하는 경우는 제외하고 측정값 집계
5.2) Fixed
- 계산된 필드 생성(Fixed 매출액 합계) : {FIXED : SUM([매출액])}
- Brand 필드를 행에 배치
- 마크 카드의 텍스트에 Fixed 매출액 합계를 배치
전체 합계가 출력됩니다.
- 브랜드 별 매출액 합계를 구하고자 하는 경우
계산된 필드 생성(Fixed 매출액 합계 by Brand) : {Fixed [Brand] : SUM([매출액])}
- 행에 Gender를 추가하면 Gender 별 합계가 출력되지는 않음
Fixed 는 자신의 수식에 포함된 경우만 그룹 별 집계를 수행하기 때문
5.3) Include
- 계산된 필드를 생성 - Include 매출액 합계 Mem NO
{INCLUDE [Mem No]: SUM([매출액])}
- 행에 Brand 필드를 배치
- 마크 카드 선반에 include 를 배치
FIXED(Brand가 행이나 열에 있더라도 적용 X) 와 다르게 view의 Brand와 Gender 를 구별해 데이터를 출력하는 모습
- 계산된 필드의 측정 값을 평균으로 수정하고 매출액의 평균을 출력해보면 2개는 다르게 나올 수 있습니다.
계산된 필드의 평균은 Mem No 별로 매출액의 합계를 구하고 그 평균을 구한 것입니다.
매출액의 평균은 전체 데이터의 평균입니다.
1번이 100원어치 구매
2번이 200원어치 구매
2번이 200원어치 구매
2번이 200원어치 구매
2번이 200원어치 구매
매출액의 평균은 180
계산된 필드의 평균은 150(1번의 평균이 100, 2번의 평균이 200 으로 해서 둘의 평균을 구하면 150)
5.4) Exclude
- 뷰에 차원이 있는 경우 집계에서 제외
- 사용 방법은 Include 와 동일
여러가지 집계를 하다보면 이미 행이나 열 선반에 추가되서 집계에 이루어졌는데 계산된 필드에서 다시 계산하는 경우를 방지하기 위해서 사용합니다.
5.5) 3가지 함수의 차이
- Fixed를 위한 필드를 생성 : {FIXED[Brand] :SUM([매출액])}
- Include를 위한 필드를 생성 : {Include[Brand] :SUM([매출액])}
- Exclude를 위한 필드를 생성 : {Exclude[Brand] :SUM([매출액])}
- 행에 Brand 와 Gender를 배치하고 3개의 계산된 필드를 마크 카드의 텍스트에 배치를 해보면 Fixed 함수는 Brand 로만 집계를 수행하고 Exclude는 Brand를 제거하고 Gender로만 집계를 하고 Include는 자신에게는 없는 Gender로도 집계를 수행함.
6. 매개변수
- 뷰를 동적으로 제어하기 위해서 사용하는 태블로의 기능
- 특정 조건에 맞는 데이터만 화면에 출력하기 위한 기능으로 필터가 있고 매개변수가 있습니다.
- 필터는 계산을 수행하지는 않고 제공되는 기능을 이용하는 것이고 매개변수는 하나를 만들어두고 여러 필드에서 사용이 가능
- 사용법
필터링 하고자 하는 조건에 맞는 자료형으로 매개변수를 생성
계산된 필드를 생성해서 매개변수를 활용할 수 있는 수식을 작성
이 수식에서는 Y나 N을 리턴하도록 작성한다.
Y 리턴 -> 출력 가능한 경우로 판
N 리턴 -> 출력 불가능 상태로 판단
날짜의 범위 또는 특정 날짜보다 크거나 작거나 하는 조건에 일치하는 데이터를 찾고자 하는 경우는 날짜 형태로 2개의 매개변수를 생성
- 매개변수를 활용한 Order_Date 필터링
날짜 형식을 갖는 시작일과 종료일 매개변수 생성
매개변수는 단독으로 사용될 수 없으므로 계산된 필드를 생성 - Order Date By 매개변수
IF [Order Date] >= [시작일] AND [Order Date] <= [종료일] THEN 'Y' ELSE 'N' END
행에 Order_date 를 배치하고 불연속 연,월을 선택한다.
마크 카드 텍스트에 매출액 필드를 드래그
7. Gantt Chart
7.1) 개요
- 시간의 경과 또는 어떤 활동에 대한 기간을 표시하는데 적합
- 프로젝트 매니저가 프로젝트의 수행 기간을 예측하거나 표시하고자 할 때 사용
예측을 할 때는 최적의 시간과 최악의 시간을 같이 고려하기 때문에 막대가 겹쳐서 적용 됨.
- Gantt Chart 를 만들 때는 2개의 날짜 데이터가 있어야 한다. (시작일, 종료일)
이 차트를 이용하여 배송 기간 이나 재구매 기간 들을 표시할 수 있습니다. (쿠팡의 재구매 추천 등)
카메라 달린 냉장고 -> 부족 물품 보고 (보고 후 자동 구매 기능은 아직 -> 서비스 개발 도전?)
7.2) 실습 : 배송 기간(배송일자 에서 주문일자를 뺀 값) 을 간트 차트로 표현
- SUPERSTORE_2019.xlsx 파일을 오픈!
- 주문 일자와 배송일자의 차이를 갖는 배송 기간이라는 필드를 생성
DATEDIFF('day', [주문 일자], [배송 일자])
- 배송 기간의 집계 방식을 평균으로 수정 : 배송 기간을 선택 후 추가 메뉴를 골라 [기본속성] - [집계] - [평균]
- 주문 일자를 열 선반에 배치하고 일(yyyy년m월d일)을 선택하고 불연속형으로 수정
- 배송 일자를 열 선반에 배치하고 일(yyyy년m월d일)을 선택하고 불연속형으로 수정
- 고객명을 필터 선반에 올리고 첫번째 데이터만 화면에 표시되도록 설정
- [툴 바] 에서 맞춤 영역을 전체 보기로 변경
- 마크 카드에서 유형을 간트 차트로 변경
- 배송 기간 필드를 마크의 크기와 레이블에 배치
- 레이블의 숫자 서식을 소수 1자리 까지만 표시할 수 있도록 레이블의 서식을 수정
- 마크 선반에서 레이블을 클릭하고 맞춤을 선택해서 가로 왼쪽 맞춤을 수행
- 배송 방법 필드를 마크의 색상에 드래그
- 다른 고객의 데이터를 확인할 수 있도록 필터 선반의 고객명 필터를 선택 후 마우스 오른쪽을 클릭해서 필터 표시를 선택
8. Histogram
8.1) 개요
- 횟수를 막대 그래프로 표현한 차트
- 재구매 이력을 이용해서 고객 세분화 분석에 이용하는 것이 가능
8.2) 고객의 재구매 이력 히스토그램
- 고객 별 첫 주문일자를 조회하기 위한 필드
{FIXED [고객명] : MIN([주문 일자])}
- 고객별 재주문 일자를 조회하기 위한 필드 : 고객별 재주문 일자
IIF([주문 일자] > [첫 주문], [주문 일자], NULL)
- 고객별 두번째 주문 일자를 조회하기 위한 필드 : 고객별 두 번째 주문일자
{FIXED [고객명] : MIN([재주문])}
- 첫 주문과 두번째 주문까지 걸린 기간 : 고객별 첫 주문 후 두 번째 주문까지 걸린 날짜
DATEDIFF('day', [첫 주문], [재주문])
- 고객별 첫 주문 후 두번째 주문까지 걸린 날짜 필드에 구간 적용 - binnig
일정한 간격 갖도록 만드는 것
- 고객별 첫 주문 후 두번째 주문까지 걸린 날짜 필드에 구간 적용 필드를 연속형으로 변환
- 고객별 첫 주문 후 두번째 주문까지 걸린 날짜 필드에 구간 적용 필드를 열 선반에 배치
- 고객명을 행 선반에 배치하고 측정 값을 카운트(고유)로 적용
- 오른쪽 하단에 null이 있다면, 상품을 처음 구매하고, 이후 구매 내역이 없는 내용이고 이를 선택하면 데이터 필터링으로 제거가 가능함.
- 마크의 색상을 흰색으로 변경하고 테두리는 검은 색으로 수정
10. 라운드 형 막대
- 매출 필드를 열 선반에 배치
- 열 선반을 더블 클릭해서 임시 계산으로 AVG(0)을 입력
- 2개의 열을 단일 축으로 만들기 위해서 AVG(0) 을 뷰 영역으로 드래그 해서 = 모양이 생겼을 때 드랍
- 행 선반에 있는 측정값 이름을 마크에 있는 경로 위에 드래그 앤 드랍
- 하나로 되어있는 선을 나누기 위해서 [제품 중 분류] 필드를 행 선반에 배치
- 데이터를 정렬하기 위해서 행 선반에 있는 제품 중 분류 필드를 선택하고 마우스 오른쪽을 클릭하고 정렬을 선택해서 매출 합계의 내림차순으로 배치
- 양쪽에 출력된 레이블을 한쪽에만 출력하기 위해서 마크 카드의 레이블을 선택하고 레이블 마크를 라인 끝으로 선 시작점 레이블의 체크를 해제
- 툴바에 있는 행과 열 바꾸기를 누르면 차트의 방향이 반전
- 행 선반에 있는 측정값을 CTRL을 누른채 마크 카드의 크기에 드롭
11. 캘린더 차트
11.1) 개요
- 캘린더 차트는 없는 날짜를 열 과 행에 배치해서 서식을 변경하여 캘린더 처럼 생성
- 캘린더 차트를 이용하게 되면 월 단위 내의 날짜 별 또는 요일 별 패턴을 찾을 수 있습니다.
시간이나 날짜 별 패턴을 양 방향으로 적용해서 찾을 때는 HeatMap을 많이 이용합니다.
HeatMap은 직사각형 형태로만 생성할 수 있습니다.
날짜 별로 패턴을 찾고자 할 때는 다양한 방법으로 시각화를 해봐야한다.
11.2) 캘린더 형태로 데이터를 출력
- 열 선반에 주문 일자를 2개를 배치
첫번째 주문 일자는 불연속형 년월로 설정
두번째 주문 일자는 불연속형 [요일]로 설정
- 행 선반에 주문일자를 배치하고 불연속형 [주 번호]를 선택
- 주문 일자를 마크 카드의 텍스트에 배치하고 불연속형 [일]을 선택
- 현재는 주문이 없는 경우 표시가 않됩니다.
거의 모든 날짜에 주문이 있는 2019년 6월만 표시
주문 일자를 필터 선반에 배치하고 2019년 6월만 필터링
- 마크 카드의 유형을 사각형으로 변경!
- [수익] 필드를 드래그하여 색상 마크에 배치
- 툴바의 보기 모드를 전체 보기 모드로 변경
- 사각형을 명확하게 구분하기 위해서 마크 카드의 색상에서 테두리를 선택하고 흰색을 설정
- 왼쪽의 주 번호를 삭제하기 위해서 주 번호 위에서 마우스 오른쪽을 클릭하고 머리글 표시를 해제
- 상단의 주문일자 레이블도 출력될 필요가 없으므로 선택하고 마우스 오른쪽을 눌러서 필드 레이블 숨기기를 선택해서 화면에서 제거
- 요일의 약자를 표시하기 위해서 요일을 선택하고 마우스 오른쪽을 클릭한 후 서식에서 머리글 탭에 있는 날짜를 약어로 선택
- 좌우의 구분을 없애기 위해, 뷰의 빈 영역을 선택하고 마우스 오른쪽을 클릭한 후 테두리 서식에서 열 탭의 구분선 머리글 없음을 선택
- 기본적으로 태블로는 일요일 부터 시작하는데 다른 요일부터 시작하고자 할 때는 데이터 원본에서 날짜 속성을 선택해서 변경
11. 피라미드 차트를 만들고 이 차트를 이용해서 대시보드에 양방향 막대 차트 출력
11.1) 데이터
- 슈퍼스토어 샘플 파일의 주문 시트
11.2) 동남 아시아 와 북 아시아 데이터만 이용하기 위한 필터링
- 지역 필드를 필터 선반에 배치하고 동남아시아와 북아시아만 선택
11.3) 양방향 차트를 만들기 위한 필드 생성
- 수식
IF [지역] = '동남아시아' THEN [매출] * -1
ELSE[매출] END
11.4) 필드를 배치
- 양방향_매출을 열 선반에 배치
- 중분류를 행 선반에 배치
11.5) 옵션 설정
- 지역 필드를 색상에 드래그 드롭
- 중분류 필드를 선태갛고 추가 메뉴를 눌러서 정렬을 선택한 후 매출 합계의 내림차순 정렬
- 차트를 양방향으로 만들 때 좌우의 값의 최대나 최소가 차이가 나면 차트가 한쪽으로 치우치기 때문에 값의 범위를 맞추어 균형잡힌 형태로 만들기 위해서 X 축을 선택하여 마우스 우클릭, [축 편집] 클릭, [범위] -> 고정을 선택 후 시작과 종료 값을 설정.
- 매출 필드를 마크 카드 위의 레이블에 드래그 앤 드랍을 하고 서식에서 숫자 형식을 변경
- 레이블을 출력시, 축이 필요없는 경우가 있어 X 축을 선택 및 마우스 우클릭 후 머리글 표시 해제
11.6) 시트를 2개 복제하여 시트의 이름을 동남아시아와 북아시아로변경
11.7) 동남아시아 시트 작업
- 열 선반에 있는 [합계(양방향_매출)] 의 추가 메뉴를 클릭해서 [머리글 표시]를 선택
- X 축을 선택하고 마우스 오른쪽 버튼을 눌러서 [축 편집]을 선택하고 [범위]에서 고정을 선택한 후 시작은 - 140000 그리고 끝은 0으로 설정해서 동남아시아 데이터만 보이도록 편집
11.8) 북아시아 시트 작업
- X 축과 Y 축을 선택해서 마우스 오른쪽 버튼을 누르고 [머리글 표시]를 한 후에, 시작은 0 , 끝은 140000으로 설정해 북아시아만 나오도록 편집
- X 축을 선택해 [머리글 표시]를 해제
- Y 축을 선택하고 마우스 우클릭 [서식] -> [머리글] 탭의 기본값 항목에서 [맞춤]을 가로 정렬로 변경
11.9) 대시보드
- 대시보드는 여러 개의 뷰를 화면에 배치할 수 있는 개체
- 여러 시트들에 작업한 것을 하나의 화면으로 만들고자 할 때 이용
- 대시보드는 기본적으로 세로 방향으로 개체를 배치하는데 이를 가로 방향으로 하고자 하면 왼쪽 하단의 개체에서 가로 컨테이너를 드래그해서 드롭
- 동남아시아 시트를 왼쪽에 북아시아 시트를 오른쪽에 드래그
- 북아시아 부분의 중분류 머시기
- 동남아시아와 북아시아의 제목 부분을 숨기고자 하면 제목을 선택하고 마우스 오른쪽을 눌러서 제목 숨기기 선택
- 동남아시아와 북아시아의 여백을 없애서 가까이 붙이기
레이아웃에서 작업
- 범례를 선택하고 마우스 오른쪽을 누른 후 [부동]을 선택하고 적절한 위치로 이동
노력없는 보상을 바라지 말자
효율을 위해 비효율로 노력하자
죽을듯이 힘들어도 돌아보면 찰나의 순간일 뿐이다
그 누구도 1년을 365일 보다 많이 살 수 없다
미래는 과거가 아니라 오늘이 모여 이루어진다
'LG 헬로비전 DX DATA SCHOOL > Tableau' 카테고리의 다른 글
Tableau 입문 4 (0) | 2023.08.07 |
---|---|
Tableau 입문 2 (0) | 2023.08.03 |
Tableau 입문 (0) | 2023.08.02 |