-
회사에서 YouTube 데이터 관련 이슈가 들어왔다.
YouTube 채널들의 구독자수, 조회수 등 지표를 YouTube 스튜디오를 통해 관리하고 있는데 이 YouTube 스튜디오에서 제공하는 분석기능에 불편한 점이 많은 것 같다.
불편 한 점 중 몇가지를 적어보면
비디오 갯수가 500개로 제한이 걸려있어서 500개 이상의 비디오들의 구독자 수, 조회 수 등 지표를 확인하고 싶을 경우 수동으로 일일이 그룹을 만들어서 지표를 뽑아야한다. 콘텐츠 관련 회사라 운영하는 채널들도 많고, 비디오 갯수가 500개가 넘어 관리가 쉽지 않은 상황인것 같다.
YouTube에서 제공하는 API를 활용하면 이런 문제를 해결 할 수 있을것 같다는 생각에 업무자동화를 해보기로 하였다.
먼저 YouTube에서 제공하는 API는 크게 2가지가 있다.
YouTube Analytics API
YouTube Reporting API
두 API를 조사하면서 느낀 큰 차이점을 정리해보면
YouTube Analytics API 방식
- HTTP 요청 / 응답 방식
- 요청 보낼 때 day, month 등 시간 단위로 짤라서 데이터를 합산한 결과를 요청 할 수 있다.
(주별 데이터는 이제 제공하지 않으려는듯 하다.)
- 요청 보낼 때 filtering 나 sorting, 국가 나 채널 과 같은 컬럼 기준으로 묶어서 합산한 결과 같은 것도 지정이 가능하다. 그리고 그것을 Dimension 지정이라고 하는것 같다.- 과거 발생 데이터 요청이 가능하다
- 구글 사용자 계정에 5가지 인증 스코프가 필요하다.
- 1개의 채널에 대한 정보를 가져오는 Channel reports,
- 계정 소유자가 가진 모든 체널들에 대한 정보를 가져오는 Content owner reports 가 존재 한다.
YouTube Reporting API 방식
- report를 생성하는 job을 미리 등록해두고 매일매일 발생한 report의 csv파일을 받을 수 있는 주소가 제공되는 방식
- 확인 결과 대략 최근 2개월까지만 report가 쌓이고 오래된 report들은 사라지기 때문에 2달 이상 과거 데이터를 가져올 수 없다.
- 요청 보낼 때 filter 나 sorting, Dimension 같은 것도 지정하는 것이 아니라 원본 데이터를 내려받아서 결과물에서 따로 정렬이나 집계를 해야한다.
- Google BigQuery Transfer 서비스로 YouTube Analytics 데이터를 연결 할 수 있는데 그때 이 API를 내부적으로 사용하는 것 같다.
- Google BigQuery Transfer를 이용할 경우 매일 UTC기준 6시 부터 다음날 6시 까지 발생된 데이터가 다음날 14시에 제공되고 그 데이터를 BigQuery 테이블에 자동으로 집어 넣어 준다. 테이블, 뷰까지 자동으로 생성해서 말이다.
- Google BigQuery Transfer 서비스를 이용할 경우, 인증에 쓰인 사용자 계정에 걸려있는 job이 있으면 그 job의 report가 다운가능한 상태가 되었을 때 그 report 정보를 빅쿼리에도 넣어준다. 처음에 Transfer 서비스를 실행할 때 안걸려있는 job이 있으면 그것들도 다 활성화 할거냐는 옵션이 있다. 이 옵션을 체크 해봤는데 20개가 넘는 job이 활성화 되고 그만큼의 테이블과 뷰가 자동 생성되어 버렸다.
위의 두 API는 데이터를 가져오는 방식이라고 보면 될것 같다.
직접 요청 할 건지, 아니면 매일매일 생성되는 raw 리포트를 다운받기 위해 배치잡을 구성할건지
나는 크게 2가지 프로세스가 필요한 상황인데
1번 요구사항 : 월단위로 집계된 과거 기간 데이터가져오기
2번 요구사항 : 앞으로 발생할 데이터가 안없어지고 살아남아 있도록 하기
그렇다면 위에 조사한 바로는
1번 요구사항 같은 경우는 YouTube Analytics API 방식 을 사용해야 할 것 이고
2번 요구사항 같은경우는 YouTube Reporting API 방식을 사용해야 할 것 같다.
다음에는 제공되는 데이터 방식이 아니라 데이터 자체에 대해 정리를 진행 하겠다.
'🏢 업무 리서치 기록' 카테고리의 다른 글
로그인 기능 구현의 과정 (feat. OAuth2.0 와 JWT) (0) 2022.12.16 OLTP VS OLAP (feat. 트랜잭션 ACID 특성) (0) 2022.12.15 ssh 포트포워딩(터널링) 뚫기 (feat. 로컬에서 AWS VPC내 RDS 접속하기) (3) 2022.12.15 [BigQuery] Streaming Insert VS Insert Into DML Query (1) (0) 2022.12.01 YouTube 데이터와 친해지기 (2) - Channel Reports VS Content Owner Reports (1) 2022.12.01