[사전캠프 5일차] 아티클 스터디 + SQL 달리기반 2번 문제
사전캠프 5일차
매일 TIL을 작성하겠다는 다짐에도 불구하고.. 이번 주에 개인 이슈들이 많아서 사전캠프에 꼬박꼬박 참여하지 못했다.
오늘은 아티클 2개로 스터디를 진행하고, 개인 공부를 하는 시간을 가졌다.
아티클 스터디
오늘의 주제는 데이터 리터러시 & 잘못된 데이터 해석으로 한번쯤 들어봤을 '화해'의 데이터 팀의 이야기를 통해 문제를 해결할 수 있는 방법을 소개한다.
https://yozm.wishket.com/magazine/detail/1632/
데이터 리터러시(Data Literacy)를 올리는 방법 | 요즘IT
화해팀은 일찍이 데이터의 중요성을 강조해왔는데요. 조직 전반적으로 데이터 활용력을 높이고, 데이터 의사결정 문화를 활성화하기 위해 많은 시도를 해왔습니다. 데이터를 거의 실시간에 가
yozm.wishket.com
https://yozm.wishket.com/magazine/detail/1816/
그 데이터는 잘못 해석되었습니다 | 요즘IT
무엇이든 데이터가 있으면 쉽게 결정을 내릴 수 있을 것 같습니다. 하지만 현업에서는 데이터가 있어도 결정을 내리기 어려운 상황들이 있습니다. 특히 데이터를 통한 의사결정을 내릴 때, 가장
yozm.wishket.com
- 내가 정리한 내용
[주제]
데이터 리터러시와 데이터 바로 읽기
[아티클 요약 1]
- 데이터 리터러시: 데이터를 활용해 문제를 해결할 수 있는 능력
- 어떤 데이터를 보는지, 어떤 의사결정을 내리는지
- 데이터를 잘 활용한다 → 문제를 잘 정의하고 해결한다
- 데이터/실험 기반 사고방식
- 실험 프로세스를 정리하여 각 단계마다 어떤 결과를 기대하는지 설정
- 분석 흐름대로 데이터 탐색이 가능한 환경
- 데이터맵: 전사에서 다루는 인풋, 아웃풋 지표 간의 관계를 표현한 관계도
- 대시보드: 분석 흐름을 따라가면서 지표를 탐색할 수 있도록 설계
- 이를 도와주는 분석가
- 단순히 데이터 추출, 기술적인 분석에서 그치지 않고 문제 정의 및 원인 분석, 액션 아이템 도출까지가 분석가의 역할 >> 이를 위해 채용 공고에 구체적인 직무 기술서 필요
- 분기마다 가장 중요한 지표를 OKR로 설정해 업무 방향성 제시
- 데이터 플랫폼
- 데이터 레이크: 원천 데이터 적재
- 데이터 웨어하우스: 구조화된 데이터
- 데이터 카탈로그: 레이크, 웨어하우스 내에 어떤 데이터 있는지 쉽게 확인
[아티클 요약 2]
- 데이터 잘못 해석 유형
- 생존자 편향의 오류: 고객 이탈 상황에서 전체 이용자를 기준으로 하지 않고 이탈자를 대상으로 보면, 잘못된 지표 설정이 발생할 수 있다
- 심슨의 역설: A서비스가 B서비스가 보다 남성, 여성의 만족도가 각 각 더 높음에도 불구하고 종합 만족도로 평균을 내면 낮아지는 현상. 전체 지표와 그룹을 나눈 지표의 방향성이 다르게 나타나는 상황이다
>> 특성이 다른 성별, 연령대, 기기 타입, 신규/기존 여부 등의 기준을 미리 정하기
>> 데이터 분석에서 많이 사용하는 퍼널 전환율, 결제 전환율, 클릭률 등 여러 지표에서 오류 발생 가능성 有 - 상관관계를 통한 성급한 일반화: 지표 간의 관계를 파악하여 해석할 때 쉽게 나오는 오류, 상관성은 있으나 인과성이 없으면 제 3의 공통 원인이 존재할 가능성이 높음
- 목적에 맞지 않는 지표 선택
- CTA: 유저의 행동을 유도하는 버튼
- 세이건 표준 참고하기
[인사이트 1 ]
- 화해팀의 실제 사례를 통해 현업에서 데이터 요청의 목적과 배경, 해결하려는 문제와 솔루션, 측정 지표 등을 알 수 있었다.
- 추후 데이터 분석 프로젝트를 진행할 때, 제대로 된 분석과 결론을 도출하려면 문제 정의 단계부터가 중요하다는 점을 깨달았다.
[인사이트 2]
- 심슨의 역설은 수학과 전공에서도 많이 배우는 내용인데, 데이터 분석 시 여러 지표에서 나타나는 오류임을 다시 알 수 있었다.
- 데이터 분석 시에 상관 관계를 히트맵으로 시각화하여 규칙을 찾기 마련인데, 상관성과 인과성을 혼동하지 말아야 겠다는 생각을 했다.
SQL 달리기반 2번 문제 풀이
[제]
날짜별 획득포인트 조회하기
[상황]
이번에는 이용자들이 잘 활동하고 있는지 보고자 합니다. 포인트가 많을수록 활동을 잘하고 있다고 생각 할 수 있습니다. 날짜별로 획득한 포인트가 점점 늘어나는지 줄어드는지 확인해 봅시다.
[문제]
다음과 같은 결과테이블을 만들어봅시다.
- created_at: 익명화된 유저들의 아이디(varchar255)
- average_points: 유저가 획득한 날짜별 평균 포인트(int), 반올림 필수
[데이터 설명]
- point_users 테이블은 스파르타코딩클럽 가입 유저들의 포인트에 대한 정보를 기록한 테이블입니다.
- point_user_id: user_point 행을 구별하기 위한 key(varchar255)
- created_at: 아이디 생성 날짜(timestamp)
- updated_at: 정보 업데이트 날짜(timestamp)
- user_id: 익명화된 유저들의 아이디(varchar255)
- point: 보유하고 있는 포인트(int)
접근
- alias로 칼럼 이름 지정
- date 함수로 created_at의 timestamp를 날짜 데이터 형식으로 바꾸기
- 날짜별로 groupby, 평균은 avg, 반올림으로 소수점 안만들기 round
최종 코드
SELECT DATE(p.created_at) AS created_at
, ROUND(AVG(p.point)) AS average_points
FROM point_users AS p
GROUP BY DATE(p.created_at)