갈루아의 반서재

공식블로그 포스팅 “Query without a credit card: introducing BigQuery sandbox” 에서 더 자세한 내용은 살펴볼 수 있습니다. 여기서는 간단하게 BigQuery 를 시작에 초점을 맞춰서 포스팅해봅니다.


1. 계정 생성

BigQuery web UI 에서 계정 생성을 합니다. BigQuery는 아래와 같은 UI 를 가지고 있습니다.


2. 첫번째 쿼리

첫 번째 쿼리로 위키디피아에서 가장 유명한 Alan 이 누구인지 알아보는 쿼리를 만들어보자. 다음 쿼리를 BigQuery web UI 실행을 클릭한다.

SELECT title, SUM(views) views

FROM `fh-bigquery.wikipedia_v3.pageviews_2019`

WHERE DATE(datehour) BETWEEN '2019-01-01' AND '2019-01-10'

AND wiki='en'

AND title LIKE r'Alan\_%'

GROUP BY title

ORDER BY views DESC

LIMIT 10

실행하면 앞서 본 이미지와 같이 결과가 출력되는데, Alan Turing 이 2019년 첫 10일 동안 가장 많은 페이지뷰를 기록한 것으로 나왔다. 

해당 쿼리를 분해해보자. 

SELECT title, SUM(views) views  각 제목에 대한 페이지뷰의 합계를 보여준다

FROM `fh-bigquery.wikipedia_v3.pageviews_2019` 위키디피아 2019 페이지뷰 테이블을 스캔닝한다. 

WHERE datehour BETWEEN ‘2019–01–01’ AND ‘2019–01–10’ 2019년 첫 10일만 기준으로 삼는다

AND wiki=’en’ 위키디피아에는 여러 언어 버전이 있는데 여기서는 영문 버전만 참고한다. 

AND title LIKE r’Alan\_%’ Alan_ 으로 시작되는 모든 위키디피아 페이지를 찾는다

GROUP BY title 각 제목에 대해 SUM(views) 을 구한다

ORDER BY views DESC 뷰가 많은 순으로 정렬한다

LIMIT 10 상위 10개만 결과 출력

실행결과의 가운데 부분을 보면, 10일간 위키디피아는 56억 페이지뷰를 넘겼다. BigQuery 내에서는 72 GB 이상의 데이터로 표현된다. 2018 위키디피아 모든 테이블의 페이지뷰는 2.25 TB 정도 된다. BigQuery 를 사용하는 비용은 스캔되는 컬럼의 사이즈에 따라 다르다. 이번에는 스택오버플로우 질문 중 뷰 카운트가 많은 질문 10개를 찾아보자.

SELECT view_count, answer_count, DATE(creation_date) date, title 

FROM `bigquery-public-data.stackoverflow.posts_questions`

WHERE 'tensorflow' IN UNNEST(SPLIT(tags, '|'))

ORDER BY view_count DESC

LIMIT 10