홍동이의 성장일기

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

교육/유데미 스타터스 4기

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

홍동2 2023. 4. 14. 16:44

 

 

💭 이번주 회고

 

    저번주 일요일 저녁에 태블로 자격증을 취득했다. 👏👏👏👏 올해 개편된 시험에 대한 정보가 많이 없길래 자격증 공부 기록 겸 정보 전달 취지로 블로그 글을 작성했다. 적어놓으니 뿌듯하기도 하고 내가 준비한 과정의 흐름을 한 눈에 보기 좋았다. 다른 자격증들도 공부했던 것들을 정리해서 올려두어야겠다😊 3달 동안 TIL과 주간 학습일지를 작성하며 기록의 중요성을 느끼고 있다. 교육이 완료되고 나서도 이 블로그에 꾸준히 학습일지를 작성해야겠다.

 

 

📊 태블로 자격증(Tableau Desktop Specialist) 합격 후기 & Tip

※2023년 개편된 태블로 시험 정보가 많이 없어서 올려보는 태블로 자격증 취득 후기입니다! 저는 유데미 스타터스 교육과정 중 3일의 온라인 강의와 한 달간의 오프라인 강의를 통해 태블로를

hungdung99.tistory.com

 

    이번주부터는 SQL 수업이 오프라인으로 진행된다. Postgresql, dbeaver 라는 프로그램으로 실습을 해보고있다. 난이도가 꽤 있어서 복습을 열심히 해야겠다는 생각이 들었다. sql을 열심히 배워서 6월에 있는 sqld 자격증도 취득하는 것이 목표다💪 

 

 

👩‍💻 이번주 TIL

 

 

 

[👩‍💻TIL 45일차 ] 유데미 스타터스 취업 부트캠프 4기

이번 SQL 수업은 Postgresql과 dbeaver로 진행된다. 프로그램 설치 샘플 DB 설치 select count(*) from northwind.customers; 분석 목적 설정 → 지표 설정 및 분석 계획 → 데이터 추출/정제/가공/분석 → (BI 도구, py

hungdung99.tistory.com

 

  • 프로그램 설치: Postgresql, dbeaver
  • 샘플 DB 설치: northwind
    • 테이블 관계 (IDEFIX 표기법)
  • 테이블을 하나하나 뜯어보는 팀과제 진행

 

 

➡️ 테이블을 하나하나 정리해보니 northwind라는 데이터셋의 특징에 대해 잘 이해할 수 있었다. 해커톤 프로젝트를 진행할 때도 이 과정이 매우 중요할 것 같다.

 


 

 

[👩‍💻TIL 46일차 ] 유데미 스타터스 취업 부트캠프 4기

태블로에 PostgreSQL 연결하는 방법 1. 위 파일을 압축해제 하지 않고 C:\Program Files\Tableau\Drivers에 담는다. 2. dbeaver에서 edit connection 3. 입력창에 나오는 정보들을 참고하여 태블로 연결창에 입력 4. 연

hungdung99.tistory.com

 

  • 태블로에 PostgreSQL 연결하는 방법
  • select 구문 키워드: count, distinct, ||, coalesce, nullif
  • 날짜/시간형 데이터 다루기
    • 현재 날짜, 시간 가져오기: now(), current_timestamp, localtimestamp, current_date, current_time, localtime
    • 자료형 변환: cast(변환대상 as 자료형), 변환대상 :: 자료형
    • 단일 행 함수 → 날짜 함수
      • extract('part' from 날짜/시간타입)
      • date_part('part', 날짜/시간타입)
      • date_trunc('part', 날짜/시간타입)
        : 밑에를 다 비워버림, timestamp로 결과 반환
      • to_char(날짜/시간타입, 'part')
        : 문자형으로 결과 반환
  • 다중 행 함수(그룹 함수): 다중 행 인자로 받아들여 한 개의 값으로 결과를 반환하는 함수
    • 집계함수
      • count(*)
      • count(distinct 표현식)
    • group by, having 절
  • 개인과제

 

 

➡️ 매출액과 상관관계가 가장 높은 것은 주문건수인 것을 알 수 있다.

 


 

[👩‍💻TIL 47일차 ] 유데미 스타터스 취업 부트캠프 4기

복잡한 데이터셋: 가독성↓, 재사용성↓, 유지보수성↓, 실수↑ 복잡한 데이터셋을 다루기 위한 방법 ETL 스냅샷테이블 쿼리 결과를 테이블에 저장 예약된 시간에 백그라운드에서 실행 장점: 복

hungdung99.tistory.com

 

  • 복잡한 데이터셋을 다루기 위한 방법
    • 임시테이블 temporary table
    • 공통테이블 표현식 CTE (Common Table Expression)
  • 윈도우 함수 구문
    • 함수() over (윈도우프레임지정)
  • 윈도우 함수 분류
    • 집계함수
      • 전체 집계: 집계함수 over()
        • order by: 윈도우 지정하여 누적 합계
      • 그룹 집계: 집계함수 over(partition by <칼럼이름>)
      • 프레임 지정: 집계함수 over(윈도우프레임)
    • 행 순서 함수
      • lag / lead: 파티션 별 윈도우에서 이전/다음 행 값

 

월별 매출 증감액 & 비율 구하기

 

  • 윈도우 프레임 지정
    • rows between start and end
      • CURRENT ROW: 현재 행
      • n PRECEDING: n행 앞
      • n FOLLOWING: n행 뒤
      • UNBOUNDED PRECEDING: 이전 행 전부
      • UNBOUNDED FOLLOWING: 이후 행 전부

 

 

➡️ sql을 통해 인사이트들을 뽑아내고 이를 이해하기 쉽도록 시각화하는 과정이 재미있었던 과제였다.

 


 

[👩‍💻TIL 48일차 ] 유데미 스타터스 취업 부트캠프 4기

발표 피드백 쿼리 결과 테이블, 바 차트같은 간단한 차트까지 나타내주면 이해하기 쉽다 결론도 중요한 부분은 색깔을 다르게 하거나 두껍게 해주기 코드, 결과 테이블, 차트, 설명까지 한번에

hungdung99.tistory.com

 

  • ABC 분석 
  • case 구문을 사용하여 피벗하기
  • (너무너무 어려웠던) 개인과제: 주말에 완벽하게 이해할때까지 복습예정!!

 


 

 

[👩‍💻TIL 49일차 ] 유데미 스타터스 취업 부트캠프 4기

📍 Z차트 ➡️ 시간의 흐름에 따라 매출의 변화 확인하기 월별매출 1자이면 월별매출이 다 똑같은 것 매출누계: 해당 월 매출에 이전 월까지 매출 누계를 합한 값 이동합계(년): 해당 월의 매출

hungdung99.tistory.com

 

  • Z차트: 월별매출, 매출 누계, 이동합계(년)
  • 직접 시각화해서 Z차트 만들어보기

 

 

  • 그룹함수: grouping sets(), rollup(), cube()
  • 과제: 고객 속성, 구매 이력에 대한 집계 (그룹함수 이용)
-- country, city, contact_title grouping sets (매출액, 주문건수, 상품개수)
with cte_products_sale as(
select o.order_id , o.customer_id , order_date 
	, to_char( o.order_date, 'YYYY') as year
	, to_char( o.order_date, 'mm') as month
	, to_char( o.order_date, 'Q') as quarter
	, to_char( o.order_date, 'YYYY-mm-dd') as day
    , od.product_id , od.unit_price , od.unit_price 단가, od.quantity , od.discount
    , od.unit_price * od.quantity * (1-od.discount) as amount
    , c.category_id , c.category_name 
    , p.product_name , p.unit_price 고정단가, p.discontinued 
    , s.supplier_id , s.company_name , c2.country , c2.city , c2.contact_title 
from orders o , order_details od , categories c , products p , suppliers s , customers c2 
where o.customer_id = c2.customer_id 
and o.order_id = od.order_id 
and od.product_id = p.product_id 
and p.category_id = c.category_id 
and p.supplier_id = s.supplier_id 
)
-- 국가, 도시, contact_title별 grouping sets
, cte_grouping_sets as(
select country, city, contact_title, round(sum(amount)) 매출액, count(distinct order_id) 주문건수, sum(quantity) 상품개수
from cte_products_sale
group by grouping sets (1,(1,2),3, ())
order by 1,2,3
)
-- 국가별 매출액, 주문건수, 상품개수
, cte_country as(
select country, 매출액, 주문건수, 상품개수
from cte_grouping_sets
where country is not null
)
-- 도시별 매출액, 주문건수, 상품개수
, cte_city as(
select city, 매출액, 주문건수, 상품개수
from cte_grouping_sets
where city is not null
)
-- contact_title별 매출액, 주문건수, 상품개수
, cte_contact_title as(
select contact_title, 매출액, 주문건수, 상품개수
from cte_grouping_sets
where contact_title is not null
)
-- 전체 매출액, 주문건수, 상품개수
, cte_all as(
select max(매출액) 매출액_all, max(주문건수) 주문건수_all, max(상품개수) 상품개수_all
from cte_grouping_sets
)
/* 국가별 매출액, 주문건수, 상품개수: cte_country
 * 도시별 매출액, 주문건수, 상품개수: cte_city
 * contact_title별 매출액, 주문건수, 상품개수: cte_contact_title
 * 전체 매출액, 주문건수, 상품개수: cte_all */
select *
from cte_all
order by 2 desc;

 

 

💡 마무리하며

 

수업시간에 배운 내용들을 혼자서 만들어보려니 쉽지않았다🥲 주말동안 열심히 복습하고 수업전후 시간을 이용하여 조금 난이도가 있는 sql 코딩문제도 풀어보아야겠다. 이제 배울 수 있는 기간이 다음주가 마지막이라니 마음도 덩달아 급해진다. 마지막까지 최선을 다해야겠다. 


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

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

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

728x90
Comments