[유데미 스타터스 취업 부트캠프 4기] 7주차 학습 일지(데이터분석/시각화(태블로))

[출처 : Udemy - STARTERS 블로그 학습일지 안내]

 

안녕하세요! 오늘은 유데미 스타터스 부트캠프 7주차 학습일지입니다! 🐸

 

이번주는 태블로 오프라인 강의를 진행하며 태블로 이론, 그리고 그룹 프로젝트를 수행하였습니다.

이번 주에 배운 태블로 이론은 이해하고 활용하기까지 쉽지 않은 내용이었습니다 😭

 

그럼 7주차에는 어떤 내용을 학습했는지, 스타터스 부트캠프 7주차 학습일지 시작해보겠습니다 !💨

 


❤️‍🔥 LIKED

개인 과제 및 팀 과제

개인 과제

 

팀 과제

이번주 월요일부터 수요일까지 태블로 내 다양한 함수 사용법에 대해 배우고, 오후 시간에는 이를 활용하여 대시보드를 만들었습니다!

이번주에 배운 함수가 너무 어려워 완벽히 이해하고 따라가기 쉽지 않았습니다 😣

또한 대시보드를 통해 어느정도 맥락이 있는 정보를 전달하려고 하니, 데이터를 어떻게 활용해야 할지 고민하는 시간도 필요했습니다..!

그럼에도 직접 대시보드를 만들어보니, 강의 내용을 다시 보기만 하는 것에 비해 확실히 도움이 되었습니다.. 🙃

 

목요일, 금요일에는 그룹 과제를 진행하였는데요,

이번 그룹 과제 주제는 SuperStore Sales Tracking DashBoard 였습니다!

그룹 과제를 통해 여러 대시보드를 만들면서 늘 느끼는 점은 사용자를 고려한 대시보드를 만드는 것이 중요하다! 입니다..

이번에도 같은 피드백을 받았는데요, 알면서도 반영하기가 쉽지 않습니다 .. 🥲

저희 팀이 이번에 만든 대시보드는 Sales팀에서 실무에 활용하기 어려울 것이라고 합니다 ..

이렇게 과제마다 받게 된 피드백들을 적극 반영해 다음에는 꼭 더욱 좋은 대시보드를 만들고 싶습니다 !!

 


🌟 LEAREND

태블로 함수
차원 집계 측정값 집계 Primary 함수 Partition RANK 함수
· MIN
· MAX
· COUNT
· COUNTD
· ATTR (특성)
· SUM
· AVG
· VAR
· VAR
· TOTAL
· PREVIOUS_VALUE
· LOOKUP
· RUNNING
· WINDOW
· INDEX
· FIRST
· LAST
· RANK 
· RANK_DENSE 
· RANK_UNIQUE 

 

LOOKUP(식, [오프셋])

지정된 기준 오프셋만큼 현재 행으로부터 떨어진 대상 행에서 주어진 식을 계산하여 그 값을 반환함.

LOOKUP(SUM([Sales]), -1)
# 현재 행으로부터 이전 행의 Sales 값 반환

 

WINDOW_AVG(식, [시작, 끝])

창 내 식의 평균을 반환함. 창은 현재 행의 오프셋으로 정의됨.

WINDOW_AVG(SUM([Sales]), -1, 1)
# 현재 행으로부터 이전 행 그리고 다음 행까지의 Sales값의 평균 반환

 

RANK(식, ['asc' | 'desc'])

파티션에 있는 현재 행의 표준 경쟁 순위를 반환함.

RANK(SUM([Sales])        # 공동 1위가 3명 → 1위 / 1위 / 1위 / 4위
RANK_DENSE(SUM([Sales])  # 공동 1위가 3명 → 1위 / 1위 / 1위 / 2위
RANK_UNIQUE(SUM([Sales]) # 공동 1위가 3명 → 1위 / 2위 / 3위 / 4위

 

ATTR

:  if min(차원) = max(차원) then 차원 else * end

 

현재 VLOD에서 해당 필드가  하나의 값을 가지느냐, 복수의 값을 가지느냐에 따라

 하나의 값을 가지면 그 값을 가지고 오고, 아니면 * 가지고 오라.

 

 

계산된 필드
계산된 필드 활용의 두가지 방식

Case 1) 계산된 필드 내 식이 너무 복잡할 경우 (2x+~~) → x라는 필드를 따로 만들어서 자동화시켜야 한다

Case 2) 필드1 > 필드2 > 필드3 으로 나누기보다 데이터가 확실하면 하나의 필드로 만들자 → 이렇지 않으면 트래킹이 안되니까!

 

계산된 필드 오류 예시 및 해결방법 - 집계되지 않은 인수 혼합 

[Case 1]
ex) SUM(profit)/sales

집계된 것과 집계되지 않은것의 혼합으로 오류 발생
-> SUM(profit)/SUM(sales) or profit / sales  수정


[Case 2]
ex) IF [Region] = "West" THEN SUM([Sales]) END
-> SUM(IF [Region] = "West" THEN [Sales] END) 으로 수정

 

[Case 3]
ex) IF [Order Date] = #2022-06-28# then COUNTD ([Customer Name]) END

주문 일자별 주문 고객  집계
집계되지 않은 주문일자와 집계된 고객명 결과 혼합으로 에러 발생
-> IF ATTR([Order Date]) = #2022-06-28# then COUNTD ([Customer Name]) END

 

 

날짜 필터링
MTD(Month To Date) / QTD(Quarter To Date) / YTD(Year To Date)

MTD : 월초 누계.  즉, 월초부터 기준 시점까지의 누적 값

동일한 개념으로 YTD는 연초 누계, QTD는 분기초 누계를 뜻한다.

DATEDIFF('month', [Order Date], [date parameter])=0
AND
DATEDIFF('day', [Order Date], [date parameter])>=0

위 식을 계산된 필드로 생성 후 필터로 설정하여 참이 되는 값만 view에 표현되도록 한다.

날짜 설정을 위한 'date parameter' 매개변수를 만들어 위와 같이 연결하면 사용자가 지정한 날짜를 기준으로 MTD를 확인할 수 있다.

 

합계 of MTD(Month To Date) / QTD(Quarter To Date) / YTD(Year To Date)
SUM(IF [MTD 알맹이] THEN [Sales] END)

 

현재로부터 기준달의 합계를 보고싶다면?
CASE [M-1, M-2]
WHEN '1' THEN SUM(IF DATEDIFF('month', [Order Date], TODAY())=12 THEN [Sales] END)
WHEN '2' THEN SUM(IF DATEDIFF('month', [Order Date], TODAY())=13 THEN [Sales] END)
END

현재로부터 1년전, 그리고 13개월 전까지의 합계를 보기 위한 식이다.

위 식을 매개변수 'M-1, M-2'와 연결하여 사용할 수 있다.

 

 

결합된 필드 - 차원 정렬 nested setting
정렬 전 / 정렬 후

첫번째 사진을 보면, 카테고리 내 주 별 분류가 매출 순이 아닌 주 이름 순으로 되어있다.

즉, 3개의 카테고리에서 모든 주는 같은 순서로 정렬되어있다.

 

 우리는 각 카테고리 내 주 별 매출 순위를 기준으로 정렬하고자 한다.

 ① 두번째 사진에서 선택되어 있는 [State/Province]와 [Category]를 결합된 필드로 설정

 ② 해당 결합된 필드를 세부 설정에 드래그 앤 드롭(제일 상단)

 

 

집합
 집합 이론

 하나의 필드를 둘로 분리하는 것

 

 집합이 필터와 다른 점

· 집합 : 필드를 나누지만 어느 것도 제외하지 않음

· 필터 : 필드를 나누고 원하지 않는 것은 제거

 → 집합이 필터보다 상위 개념. 필터는 집합이 가질 수 있는 다양한 양상 중 하나

 → 그럼, 집합을 필터로 넣으면 필터처럼 사용 가능

 

 T/F 필드와 다른 점
집합 vs T/F

· 집합 : 집계된 값에 대한 sum(sales) → 아무리 카테고리를 추가해도 선택 값이 변하지 않는다.

  처음에 Customer Name으로 집합을 만들었기 때문에 Customer Name에 대한 sum(sales)를 기준으로 집합이 고정된다.

· T/F : 내가 지금 보고있는 VLOD 차원에 대한 sum(sales) → 카테고리를 추가하면 선택 값이 달라진다.

 

 

LOD 이론
LOD

이미 캔버스에서 보이는 세부 수준(VLOD)은 유지하면서 추가적 정보를 보고싶을 때

사용하는 계산식을 '세부수준(LOD) 계산식'이라 한다.

 

세부 수준 계산식 함수

1.  {FIXED [차원] ... : 집계식([측정값])}

2. {INCLUDE [차원] ... : 집계식([측정값])}

3. {EXCLUDE [차원] ... : 집계식([측정값])}

 

① FIXED

[Example 1]

위 사진에서 1번과 2번 그래프는 동일한 수치를 나타내고 있다.

그렇기에 하나의 그래프를 똑같이 복사 붙여넣기 한 것이라고 생각할 수도 있지만, 두 그래프는 다른 그래프다.

 

먼저, 1번 그래프는 VLOD 상에 나타난 그대로 [Category > Sub-Category]의 범주 하에서 Sales의 평균을 나타낸다.

반면, 2번 그래프는 LOD 계산식을 이용하여 만들어낸 필드의 수치를 나타내는 그래프다.

2번에서 사용한 LOD 계산식은 아래와 같다.

{ FIXED [Sub-Category] : AVG([Sales])}

FIXED를 통해 차원을 Sub-Category로 고정시키고, 그에 대한 매출 평균이 집계되도록 설정한 것이다.

 

 

[Example 2]

이전 예시와 같은 시트에서 차원을 [Category > Sub-Category > Manufactuer]로 한 단계 더 세분화시켰다.

그러니 1번 그래프는 VLOD에 따라 측정값이 Manufactuer에 따른 매출 평균으로 변화하였지만,

2번 그래프의 수치는 변하지 않았다.

FIXED를 통해 측정값 집계에 대한 차원이 고정되어있기 때문이다.

 

위와 같이 두번째 예시 시트에 이중축을 걸면, Sub-Category별 평균 매출과 각 Manufactuer의 평균 매출 차를 비교해볼 수 있다.

 

 

② INCLUDE

VLOD에 포함되지 않은 특정 차원을 포함하고 싶을 때 사용

 

[Example 1]

두 그래프 간 수치 차이가 납니다.

위 그래프는 VLOD에 따라 Category 별로 raw 데이터의 AVG(Sales)이며,

아래 그래프는 Sub-Category 별로 나누어진 AVG(Sales) 데이터를 Category 별로 다시 평균 집계한 값입니다.


다시 말해,

① Include LOD에 명시된 차원(Sub-Category)을 포함하여 집계(AVG(Sales))가 이루어지며,

② VLOD에 맞추어 표현하기 위해 첫번째 계산 결과를 재집계(AVG(Sales))한 것입니다.

 

차원을 Category > Sub-Category로 확장하니, 두 그래프의 수치가 동일합니다.

즉, 첫번째 사진 내 아래 그래프는 두번째 사진에 나온 Sub-Category 별 평균 매출을 Category 표현하기위해 한 번 더 집계한 것입니다.

 

 

③ EXCLUDE

VLOD에 포함된 특정 차원을 제외하고 싶을 때 사용

첫번째 그래프 : VLOD에 따라 Category > Sub-Category 별로 표현된 AVG(Sales)

두번째 그래프 : Sub-Category 차원을 제외한, Category 별로 표현된 AVG(Sales) 

 

다시 말해,

① Exclude LOD에 명시된 차원을 제외한 후 집계가 이루어짐

② VLOD에 맞추어 표현하기 위해 첫번째 단계 결과를 복제함


💦 LACKED

전략 컨설팅 발표 피드백

[Top - Down Method]  결과부터 말하기

① PT 시작 시 목표를 이야기 하기 전에, 데이터 셋에 대한 간단한 언급이 필요함

 (몇년부터 몇년까지의 데이터를 사용했고, 총 매출과 총 sum은 얼마였으며, 이 데이터는 ~개 이상으로 정확한 결과를 도출하기 위해 노력함) + 현재 회사가 어떻게 하고 있는지. 오늘, 이번달 매출과 프로핏은 암기하고 있어야 한다

② 내가 정한 목표 / 그 반대도 물어본다. 왜 그 목표의 반대를 진행하지 않았는지 이유가 준비되어 있어야 함

 (로얄고객에 대한 베네핏 / 왜 블랙리스트 제거는 안돼? .. 기재하지 않고 질문이 오면 대답하기)

③ 경쟁사 / 자사 / 시장에 대한 view 첨부

 (만약 데이터가 없다면? .. 현재 경쟁사 데이터가 구축되어 있지 않고 준비 중이기 때문에, 먼저 자사에 대한 데이터부터 보겠습니다.)

④ 애매한 그래프는 쓰지말자 + 남들이 바로 이해할 수 없는 그래프(박스플롯) 쓰지 말자

 

 

LOD 추가 정리

Include

① 데이터의 깊이가 상대적으로 깊어야 함

② 집계를 2번 해야 할 때 (평균의 최대값·최소값)

③ 설정한 차원의 영향을 include한 차원을 기준으로 결과 출력

 

Exclude

① 특성으로 설정됨

② Exclude LOD에 명시된 차원을 제외한 후 집계가 이루어지고 VLOD에 맞추어 표현하기 위해 첫번째 단계 결과를 복제함

③ 효과적으로 Exclude를 쓰기 위해서 Exclude LOD 안에서 선언된 차원이 반드시 VLOD에 들어가 있어야 함

④ LOD 식은 항상 raw level 값으로 집계를 꼭 씌어주어야 함 (ATTR, AVG, SUM 상관없음)

⑤ 기여도 : 각 도시가 각자가 속해있는 그 주의 전체 수익에 대해서 얼마만큼 기여하고 있는지 표현


✍🏻 LONGED FOR

프로젝트 대시보드 총 정리

 


그럼 이상으로 7주차 학습일지를 마치겠습니다 !

8주차도 열심히 달려보겠습니다 !!!💨

 

 

* 유데미 큐레이션 바로가기 : https://bit.ly/3HRWeVL

* STARTERS 취업 부트캠프 공식 블로그 : https://blog.naver.com/udemy-wjtb

본 후기는 유데미-웅진씽크빅 취업 부트캠프 4기 데이터분석/시각화 학습 일지 리뷰로 작성되었습니다.