관리 메뉴

ilovechoonsik

[STARTERS 4기 TIL] 프로젝트 기반 태블로 실전 트레이닝 #4 (230316) 본문

STARTERS 4기 🚉/TIL 👶🏻

[STARTERS 4기 TIL] 프로젝트 기반 태블로 실전 트레이닝 #4 (230316)

춘시기좋아 2023. 3. 16. 19:04

 

📖 오늘 내가 배운 것

 

1. 과제 피드백

2. 간단 시각화 방안

3. 금일 과제


1. 과제 피드백

1.1 전체적인 과제 피드백

  • 딱 보고 이해 못 할 거 같으면 아래 작동 방법 설명 적어주기
  • 직원들이 어느 정도 인지하고 있는 정보에 대해서는 앞/뒤 고려해보기

 

1.2 우리 조 피드백

  • 맵에 색칠 대신 원으로 변경, 어느 구역에 몇 명 있는지 확인할 수 가 없다…
  • 대소문자 통일 , 색, 원 크기 조절 (많이 쓰면 정신 없음), 숫자 2개만 있어도 될 거 같다.

 

2. 간단 시각화, 꿀팁

2.1 중복 문제

태블로는 뭐든 집계시켜버리는 성질이 있다!

잘 못 추출한 데이터는 중복 문제를 야기시킬 수 있는데

확인하는 방법은?

COUNT(~) COUNTD() (여기서 D는 DISTINCT)

 

2.2 UNION

테이블 전체 선택해서 끌어다 놓으면 됨!

태블로 에서 UNION은 알아서 중복을 제거해 줌

WHY? 태블로는 중복이 없어야 편하기 때문

 

2.3 JOIN

INNER JOIN 같은 경우는 실무에서 데이터 손실/유실/실수의 이유로 많이 사용하지 않는다.

때문에 LEFT JOIN으로 박아버림

 

근데? JOIN 시에도 중복이 되는 경우가 존재한다!

이럴 때는 모든 컬럼을 GROUP BY 걸어줘서 가공한다고 함.

어쨌든 태블로에서 JOIN은 아래와 같이

 

2.4 블렌딩

처음에 데이터 임포트 - 추출 - 데이터 다시 들어가서 - 서버에 연결, 또 뽑으면

→ 두 개 아예 다른 데이터잖아? JOIN도 아니고

바로 아래처럼

 

[데이터] - [혼합 관계 편집]

어떤 게 주, 어떤 게 보조인지 필드로 관계 설정

 

2.5 대시보드 - 탐색 (버튼)

회사의 공식 태블로 대시보드가 존재

관리하는 사람 한 두 명?

대시보드 메인 시트에서 하위 시트와 연결해 주는 장치(버튼 형태)

 

텍스트 VS 이미지 : 버튼 형태

도구 설명 : 마우스 올렸을 때 뜨는 안내 문구

삽입 - 시트

보충 설명 필요할 때 적절히 사용

 

 

2.6 대시보드 구성 팁 (직장 내 평판 챙기기)

넣어주면 좋은 정보 : 하단에 작게 원본 이름, 데이터 업데이트 시간

→ 원본 뭐냐는 문의 줄어듦

→ 엔지니어가 대시보드를 살릴 때 기준이 업데이트 시간과 방문자 수! 따라서 시간 안 적으면 버려질 수 있다.

→ 자기 자신도 DB가 잘 살아 있는 업데이트 시간을 보며 확인할 수 있다.

 

2.7 DATE 다루기

1. DATEADD(date_part, interval, date)
date 에 date_part 단위의 interval을 더함

ex) DATEADD('year', 2, #2021–08–02#)=2023–08–02 12:00:00AM  -------#오타수정 

2. DATEDIFF(date_part, date1, date2, [start_of_week])
date1(시작일)과 date2(종료일) 사이의 간격을 date_part 단위로 구함

이때 [start_of_week]는 선택사항이며, 'sunday' 로 지정 시, 일요일이 주의 첫번째 요일로 고려함

ex) DATEDIFF('week', #2021–08–04#,#2021–08–07#)=0

ex) DATEDIFF('week', #2021–08–04#,#2021–08–07#, 'saturday')=1

위의 예시는 월요일을 주의 첫 번째 요일로 고려한 것 -> 4일(수)와 8일(일)은 같은 주->0

아래의 예시는 토요일을 주의 첫 번째 요일로 고려한 것-> 수요일과 토요일은 다른 주-> 1

3. DATENAME(date_part, date, [start_of_week])
date의 date_part를 문자열로 반환

DATENAME('month', #2021–08–04#) = "August"

4. DATEPART(date_part,date,[start_of_week]
date의 date_part를 정수형으로 반환

DATENAME('month', #2021–08–04#) = 8

5. DATEPARSE(date_format, [date_string])
date_string(문자열)을 date_format의 형태(날짜형)로 반환

파싱 진행!!!!----- 지수님 감사해용 

ex) DATEPARSE('MMMM dd, YY', 'August 04, 21'). -------- #오타수정 
ex) left(str(DATEPARSE('MMMM dd, YY', 'August 04, 21')),10) =2021–08–04

6. DATERUNC(date_part, date, [start_of_week])
date 기준 date가 속한 date-part 의 첫째 날 반환

ex) DATRUNC('quarter',#2021–08–04#)= 2021–07–01. #오타수정 

ex) DATRUNC('month',#2021–08–04#)= 2021–08–01  # 오타수정 

7. ISDATE(string)
string(문자열)이 유효한 날짜면 true 반환

ex) ISDATE('August 4,2021')=true

8. MAKETIME(hour, minute, second)  시,분,초로 구성된 날짜값 반환


ex) MAKETIME(16,24,00) = #16:24:00#  -> #처음에는 디폴트값 년도,달,일 + 시간 나옴. 우 클릭 정확한 날짜 선택 시 시간만 보이지만 측정값으로 변함 + 컴퓨터마다 인식 다름.. 안 되는 경우도 다반사

9. MAX(expr1, expr2)                -----#오타수정
a와 b의 최대값 반환(동일한 유형이어야 함, 둘 중 하나라도 Null 이면 Null 반환)

ex) MAX('2021–01–01' ,'2021–03–01') = 2021–03–01 12:00:00 AM
or '2021-01-01' 부분이 아예 date 형식이어야 가능 

10. MIN(expr1, expr2)                 -----#오타수정
a와 b의 최소값 반환(동일한 유형이어야 함, 둘 중 하나라도 Null 이면 Null 반환)

ex) MIN('2021–01–01' ,'2021–03–01') = 2021–01–01 12:00:00 AM
or '2021-01-01' 부분이 아예 date 형식이면 가능 

11. YEAR(date)
주어진 날짜의 연도를 정수로 반환

ex)YEAR(#2021–08–15#) = 2021

12. MONTH(date)
주어진 날짜를 월의 정수로 반환

ex) MONTH(#2021–08–15#) = 8

13. WEEK(date)
date의 날짜 주를 정수로 반환

ex) WEEK(#2021–04–15#)=16

14. DAY(date)
date의 날짜 일을 정수로 반환

ex) DAY(#2021–08–04#)=4

15. QUARTER(date)
date의 분기를 정수로 반환

ex) QUARTER(#2021–08–04#)=3

16. TODAY()
현재 날짜 반환

TODAY()=2021–08–15

 

 

3. 금일 과제

1. 본질 잃지 않게 목표 적기

2. 현황 어떤지 쓰고

3. 대시보드에서 추가적인 설명이 필요한 부분 작성

-> PPT 3장 보고서 작성

 

 

지난번 시각화 시 문제점이 GOOD/BAD HOST들을 분류 기준에 따라 지도에 표현하기 힘들었다는 점인데, 아래 수식을 만들어 필터를 걸어줌으로써 해당 부분을 해결했다.

IF {FIXED [Host Id] : COUNT([Name])} >= 4
AND 
{FIXED [Host Id] : AVG([Review Scores Rating])} <= 74.5
THEN 'Bad H'

ELSEIF { FIXED [Host Id] : AVG([Score per hostID])}
>=
{ FIXED :
    PERCENTILE( { FIXED [Host Id]: AVG([Score per hostID])}, 0.8)
} AND 

{ FIXED [Host Id] : AVG([hostid-AVG-Price])}
>=
{ FIXED :
    PERCENTILE( { FIXED [Host Id] : AVG([hostid-AVG-Price])}, 0.8)
}
THEN 'GoodH'

ELSE NULL
END

LOD를 완벽히 숙지하지 못하여 아직도 많이 헷갈리고 특히 위 수식에 사용한

{FIXED:수식} 개념이 뭔지 모르겠다

 

추가로 지역 별 PRICE 편차가 존재하여

good host를 선별할 때, 지역 별로 진행해야 하기 때문에

지역 필터를 만들어줬는데!

Staten Island 지역에 데이터가 있음에도 분류되지 않는 것을 보아

우리가 만든 good/bad를 선별하는 수식이 지역 별 필터를 통해 선택한 지역 데이터에 덮이지 않는 것을 알 수 있다.

 

이 문제를 context를 통해 필터에 우선순위를 부여하여 해결할 수 있을 거 같아 시도해 봤지만

여전히 나오지 않는 것으로 보아 무언가 단단히 잘못됐다..

멘토님께 조언을 구하고 LOD를 더 공부해보도록 하자


💪🏻 좋았던 점, 앞으로 개선해야 할 점 (추가로 배워야 할 점)

 

📌 머리로는 이렇게 저렇게 하면 되겠다! 싶은데 구현하는 게 쉽지 않다ㅠㅠ

자연스럽게 나올 때까지 자주 사용되는 핵심 개념 정리하며 학습 지속하자!🐈

 

 

 

#유데미, #유데미코리아, #유데미부트캠프, #취업부트캠프, #부트캠프후기, #스타터스부트캠프, #데이터시각화 #데이터분석 #태블로

Comments