[데이터랩] 코딩 테스트(과제형)

디파이너리 개발팀 소개

https://iga-dev.atlassian.net/wiki/spaces/IG/pages/475070493?moved=true

데이터랩의 업무와 목표

  • 우리는 아래 요소에 집중합니다.
    • RAW 데이터에 집착합니다. 
    • 데이터 파이프 라인에 집중합니다.
    • Batch성 업무 보다는 Ad-hoc query 환경에 집중합니다.
  • 위 집중을 통해 아래 목표를 이루어 냅니다.
    • ETL에 드는 노력을 0에 가깝게 합니다. 
    • 별도의 Data 조직이 없는 고객사에 자유도 및 접근성 높은 Big Data Platform을 제공합니다.
  • 그리고 다음과 같은 일은 하지 않습니다.
    • 웹개발에 필요한 테이블 작성, 디비 관리, 프로시저 작성 
    • IDC 관리, 소프트웨어 설치

데이터랩 코딩 테스트(과제형) 안내

디파이너리 개발팀의 입사 과제(데이터랩)는 데이터 업무의 기본이 되는 가벼운 수준의 과제를 요청드립니다. 아래 과제를 제출해주시는 분만 이후 전형 진행이 가능합니다.

코딩 테스트(과제형)를 통해 확인하려는 기본적인 역량은 아래와 같습니다.

  • ETL 프로그래밍 ( csv → parquet )
  • AWS Athena 학습 및 이해
  • SQL 작성 역량

AWS 회원가입 진행

  • AWS는 우선 개인 자격으로 가입해주시면 됩니다. (일정 부분 free tier 사용 가능합니다.)
  • 과제 제출 후 발생한 비용에 대해서는 비용 지원드립니다.


과제 개요

  • CSV형태로 되어 있는 Event Data, Attribution Data 를 다운로드 하고 S3에 업로드 합니다.
  • 프로그래밍을 통해 csv파일을 parquet으로 변환합니다.
  • athena metastore와 연결합니다.
  • SQL을 통해 결과를 얻습니다.


Event  Data

  • 스키마
No.Column NameTypeDescription
1identity_adidstring사용자 고유 아이디
2osstring사용자 기기 OS
3modelstring사용자 기기 모델
4countrystring사용자 접속 국가
5event_namestring이벤트 이름
6log_idstring로그 고유 아이디
7server_datetimetimestamp서버 로그 시간
8quantityint

구매 횟수

(event_name이 abx:purchase일때만 사용)

9pricedecimal

구매 금액

(event_name이 abx:purchase일때만 사용)

                                                         <표 1. Event >

  • 데이터 설명 :  사용자 행동을 기록한 데이터 입니다.


Attribution Data

  • 스키마
No.Column NameTypeDescription
1partnerstring광고 파트너 아이디
2campaignstring광고 캠페인 아이디
3server_datetimetimestamp서버 로그 시간
4tracker_idstring광고 추적 URL 아이디
5log_idstring로그 고유 아이디
6attribution_typeint

광고 전환 타입

0: new install 

1: re install

2: re open

7identity_adidstring사용자 고유 아이디

                                                                      < 표2. attribution >

  • 데이터 설명 : 광고를 통합 유입을 기록한 데이터입니다.


SQL Query 작성

모든 쿼리에는 조건에 시작 날짜와 종료 날짜를 넣습니다. 

이 점 고려해서 Athena 구성과 쿼리 작성해주세요.

일별 Active User 데이터 추출

일자active User
2018-05-2725,000
2018-05-2830,000
2018-05-2940,000


일별 구매 유저 및 구매 금액 추출

일자active User구매 금액
2018-05-2725,0001,000,000
2018-05-2830,0001,500,000
2018-05-2940,0002,000,000


이벤트별 User 데이터 추출

eventactive user
abx:first_open50,000
abx:login35,000
abx:purchase30,000


캠페인별 User 데이터 추출

campaign_idactive user
campaign120,000
campaign230,000
campaign340,000


캠페인별 구매 금액 추출

campaign_idactive_user구매 금액
campaign120,0001,000,000
campaign230,0001,500,000
campaign340,0002,000,000


국가, 캠페인별 구매 금액 추출

countrycampaign_idactive_user구매 금액
krcampaign115,000850,000
krcampaign225,0001,200,000
jpcampaign15,000150,000


Funnel 데이터 추출

일자abx:firstopen 수행 유저abx:login 수행 유저abx:purchase 수행 유저
2018-05-2730,00025,00020,000
2018-05-2825,00022,00020,000
2018-05-2920,00017,00015,000


파트너별 new_install 유저의 funnel 데이터 추출

partnernew install userabx:firstopen 수행 유저abx:login 수행 유저abx:purchase 수행 유저
8MCosUQMik2Muvd-MU0lew40,00040,00030,00020,000


일자별 리텐션

신규 접속 일자(abx:firstopen을 처음 수행한 유저)D+0D+1D+2D+3D+7
50,00050,00030,00025,00020,00010,000

과제 결과물 제출

  • Athena에 질의한 SQL과 결과물들을 zip 압축하여 제출
    • 파일 포맷 
      • 작성한 SQL : query-1.sql
      • 결과데이터 : query-1.csv
      • 수행로그 스크린샷 : query-1.[ jpg, png, bmp, ... ]
  • EMR 소스 코드를 github 업로드 후 제출
    • aws accesskey, secretkey는 github에 업로드는 피해주세요. 해킹 위험 혹은 과도한 서버 비용이 발생할 수 있습니다.

참고 자료

제출 기한

  • 과제 전달 시점으로부터 최대 7일 이내 제출
  • 과제 결과물 제출이 빠를수록 추가 점수 부여

과제 문의

  • 서류 합격 연락을 받은 이메일 혹은 abx_dev@igaworks.com 으로 문의주시면 최대한 빠르게 답변드리겠습니다 (smile)