앞선 Bulk Report 글에서 Reporting API를 통해 보고서 생성 작업을 만들고 다운로드하는 과정을 간단히 살펴봤다. 대량의 분석 데이터를 API 통해서 받으려면 어떤 식으로 사용해야 할지 파악할 수 있었다.
본 글에서는 Reporting API를 사용할 때 주의해야 할 점들을 살펴보고자 한다.
(해당 내용은 Youtube Guide 문서에서 보다 자세히 확인할 수 있다.)
BP 사례
- 보고서 첫 번째 줄은 헤더다. 헤더의 순서는 바뀔 수 있으니 보고서를 다운로드할 때마다 헤더 값을 분석해서 어떤 순서대로 값이 들어있는지 반드시 확인해야 한다. 즉, 다운로드한 내용을 처리할 때 순서대로 처리하지 말고 반드시 키, 값 형식의 객체로 변환해서 사용하기 바란다.
- 보고서의 다운로드 비용(네트워크 등)이 크기 때문에, 매번 모든 리포트를 중복해서 다운로드하는 방식은 지양해야 한다. 이를 위해 createAfter 매개변수를 활용해서 특정 이후에 생성된 보고서만 다운로드 권장한다.
- 다운로드하여서 처리한 보고서의 고유한 정보(아이디, 생성 일시, 기준 시작/종료 일자)는 저장해 놓는 방식을 권장한다.(매번 다시 다운로드하여 사용하지 않도록...)
- 두 개의 보고서가 같은 기간의 데이터(시작/종료 일자) 일 경우 createTime 값이 더 최신인 보고서를 사용해야 한다. 같은 기간을 정보를 가지고 있는 보고서가 추가될 수 있다. 즉, 과거 데이터의 변경으로 인한 재수집의 이유로 동일한 날짜에 대한 보고서가 여러 개 나올 수 있다.
- 보고서에는 유튜브 리소스에 대한 메타 정보는 포함되어있지 않고, 이를 Data API로 찾을 수 있도록 아이디가 포함된다.(구글 정책에 따라 메타 정보는 30일 후에 반드시 지우거나 갱신해야 한다. 근데 현실적으로 구글이 데이터의 보존 여부를 파악할 수는 없기 때문에, 추후 분쟁이 생길 때를 위한 대비책 정도라고 파악된다.)
보고서 특징
- 보고서는 콤마(,)를 구분자로 하며, 헤더를 가지고 있는 CSV 파일 형식이다.
- 보고서의 데이터는 태평양 표준시(UTC-8, 서머타임 -7) 기준으로 오전 12시부터 오후 11시 59분까지의 24시간 동안의 데이터가 포함된다. 즉 우리나라 기준으로 오후 5시에서 다음날 오후 4시 59분까지의 데이터인 셈(서머타임은 오후 4시 ~ 오후 3시 59분). 수집 시간 엄청 애매모호하기 때문에 수집 일자 기준을 명확히 세워야 한다. (필자의 경우 유튜브 스튜디오 분석 화면의 날짜 기준(PST)을 따랐다.)
- 보고서는 매일 업데이트된다. 그런데 업데이트 시간이 일정하지 않고 기존에 생성된 보고서가 수정될 경우도 있다. 때문에 수집 자동화를 고려한다면 수집 시간 설정과 이에 따른 예외 처리 전략을 잘 작성해야 한다. 아래 표는 필자가 수집한 보고서의 생성시각 정보다.
- 수집할 데이터가 없는 경우에도 헤더만 존재하는 보고서가 만들어지기 때문에, 다운로드 처리 로직을 감안해서 개발해야 한다.
- 유튜브의 정책이 변경되면 보고서를 검색할 수 있는 기간에 영향을 미칠 수 있다. 한마디로 유튜브 마음이다 -_ -; 아래 언급한 보고서 다운로드 기간이 나중에 더 짧아질 수도 있다는 말.
- 생성된 보고서는 60일 동안 사용할 수 있고, 60일이 지나면 다운로드가 불가하다.(보고서 생성 목록 조회하면 최대 72건 조회됨)
- 기록 데이터(Historical Data, 뒤에 설명)가 포함된 보고서는 30일 동안 사용할 수 있고, 30일이 지나면 다운로드가 불가하다.
- 보고서 데이터는 필터링되지 않는다. 즉, 삭제된 리소스를 제외한 모든 데이터가 보고서에 포함된다. 단, 메트릭(측정 항목)이 없는 행은 0으로 표시되는 게 아니라 아예 표시 안된다.(개발해 보니 이게 맞다 싶다. 이렇게 안 하면 0과 null의 구분이 모호해 짐). 즉, 조회수를 측정항목으로 설정해서 보고서를 조회했는데, 조회수가 없으면 아예 행으로 표시가 안된다.
- 보고서 데이터는 정렬되어 있지 않다. 보고서 양이 크기 때문에 정렬이 필요한 경우 반드시 최적 알고리즘을 사용하기 바란다.(하드웨어 맹신론자의 '버블 소팅이 최고' 주의는 이제 그만...)
- 보고서에 요약행 같은 건 없다. 직접 계산해야 한다. 조회수 총합을 계산할 수는 있지만, 위에서 말한 삭제 데이터가 있을 경우 오차가 생길 수 있다. Analytics API를 사용하면 삭제된 데이터 포함된 결과를 얻을 수 있으니 요약을 구할 때는 Analytics API를 사용하자.
백필 데이터
- 이전에 생성한 보고서 데이터를 대체하는 데이터를 의미한다. BP 사례에서도 언급했듯이, 데이터 변경이 생기면 동일 기간에 대해 수정된 보고서가 생성되기 때문에 보고서를 다운로드할 때는 createTime 필드를 반드시 확인하자.
기록 데이터
- 새로운 보고서 작업을 생성하면, 유튜브에서는 자동으로 이 작업 생성시점 이전에 대한 보고서를 생성한다. 보고서 데이터를 활용할 때, 이전 대비 얼마큼이 증감했는지 비교하는 부분이 필요한데, 이를 위해서 자동으로 유튜브에서 생성해주는 보고서라고 보면 된다.
- 기록 데이터는 작업 생성 요청 이전 30일 동안의 보고서를 생성한다.
- 기록 데이터 보고서는 사용 가능한 즉시 게시된다. 일반적으로 작업 요청 후 며칠 이내에 모든 기록 데이터가 게시된다.
- 기록 데이터 보고서는 생성된 날부터 30일 동안만 사용 가능하다.(보고서는 60일)
데이터 익명화
- 모든 데이터가 보고서에 포함되지는 않는다. 사용자의 익명성 보장하기 위해서 임계치를 충족하지 않는 값은 표시되지 않는다.(NULL 값으로 표시됨)
- 예를 들어, 트래픽 소스 정보가 포함된 보고서에서는 어떤 검색어를 통해서 해당 영상을 시청했는지 그 정보와 조회수 등을 보여준다. 그런데 조회수가 10 미만일 경우 검색어 정보는 NULL로 표시된다.(소수의 사용자에 대한 익명성을 보장해 주기 위함이라는데 사실 피부로 와 닿지는 않는다;)
- 아래 데이터처럼 검색어가 10 미만인 값들은 보고서에서 하나로 합쳐 서서 NULL로 표시된다.