BigQuery를 사용하여 GitHub 데이터 쿼리

BigQuery는 Google의 완전 관리형, 노옵스(NoOps), 저비용 분석 데이터베이스입니다. BigQuery를 사용하면 데이터베이스 관리자나 관리할 인프라가 없어도 테라바이트 단위의 데이터를 쿼리할 수 있습니다. BigQuery는 친숙한 SQL과 사용한 만큼만 지불하는 요금 모델을 사용합니다. BigQuery는 데이터를 분석하여 의미 있고 유용한 정보를 찾는 데 집중할 수 있게 해줍니다.

이 실습에서는 BigQuery에서 사용할 수 있는 공개 데이터 세트 중 하나인 GitHub 공개 데이터 세트를 쿼리하는 방법을 알아봅니다.

학습할 내용

  • BigQuery 사용
  • 대규모 데이터 세트에 대한 통계를 얻기 위한 쿼리 작성

필요한 항목

  • Google Cloud Platform 프로젝트
  • 브라우저(Chrome, Firefox 등)

BigQuery 사용 설정

아직 Google 계정 (Gmail 또는 Google Apps)이 없으면 계정을 만들어야 합니다.

  • Google Cloud Platform 콘솔 (console.cloud.google.com)에 로그인하고 BigQuery로 이동합니다. 또한 브라우저에 다음 URL을 입력하면 BigQuery 웹 UI를 직접 열 수 있습니다.
https://console.cloud.google.com/bigquery
  • 서비스 약관에 동의합니다.
  • BigQuery를 사용하려면 먼저 프로젝트를 만들어야 합니다. 프롬프트에 따라 새 프로젝트를 만듭니다.

    프로젝트 이름을 선택하고 프로젝트 ID를 메모해 둡니다.


    프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유한 이름입니다. 이 이름은 나중에 Codelab에서 PROJECT_ID로 참조됩니다.

이 Codelab에서는 BigQuery 샌드박스 한도 내에서 BigQuery 리소스를 사용합니다. 결제 계정은 필요하지 않습니다. 나중에 샌드박스 한도를 삭제하려면 Google Cloud Platform 무료 체험판에 가입하여 결제 계정을 추가하면 됩니다.

BigQuery 웹 UI에서 GitHub 데이터 세트를 엽니다.

https://console.cloud.google.com/bigquery?p=bigquery-public-data&d=github_repos&t=commits&page=table

데이터가 어떻게 표시되는지 빠르게 미리 볼 수 있습니다.

쿼리 편집기를 엽니다.

GitHub 공개 데이터 세트에서 가장 일반적인 커밋 메시지를 찾으려면 다음 쿼리를 입력합니다.

SELECT subject AS subject,
  COUNT(*) AS num_duplicates
FROM `bigquery-public-data.github_repos.sample_commits`
GROUP BY subject
ORDER BY num_duplicates DESC
LIMIT 100

GitHub 데이터 세트는 크므로 실험하는 동안 더 작은 샘플 데이터 세트를 사용하여 비용을 절감하는 것이 좋습니다. 편집기 아래에 있는 처리된 바이트를 사용하여 쿼리 비용을 추정합니다.

쿼리 실행 버튼을 클릭합니다.

몇 초 후 결과가 하단에 표시되며 처리된 데이터의 양과 소요 시간도 표시됩니다.

sample_commits 테이블은 2.49GB이지만 쿼리는 35.8MB만 처리했습니다. BigQuery는 쿼리에 사용된 열의 바이트만 처리하므로 처리된 데이터의 총량이 테이블 크기보다 훨씬 적을 수 있습니다. 클러스터링파티션 나누기를 사용하면 처리되는 데이터의 양을 더욱 줄일 수 있습니다.

이제 다른 데이터 세트(예: 다른 공개 데이터 세트 중 하나)를 쿼리해 보세요.

예를 들어 이 쿼리는 Libraries.io 공개 데이터 세트에서 지원이 중단되었거나 유지관리되지 않지만 다른 프로젝트에서 종속 항목으로 여전히 사용되는 인기 프로젝트를 찾습니다.

SELECT
  name,
  dependent_projects_count,
  language,
  status
FROM
  `bigquery-public-data.libraries_io.projects_with_repository_fields`
WHERE status IN ('Deprecated', 'Unmaintained')
ORDER BY dependent_projects_count DESC
LIMIT 100

다른 조직에서도 BigQuery에서 데이터를 공개적으로 제공하고 있습니다. 예를 들어 GitHub Archive 데이터 세트를 사용하여 pull 요청, 저장소 별표, 열린 문제와 같은 GitHub의 공개 이벤트를 분석할 수 있습니다. Python Software Foundation의 PyPI 데이터 세트를 사용하여 Python 패키지의 다운로드 요청을 분석할 수 있습니다.

BigQuery와 SQL을 사용하여 GitHub 공개 데이터 세트를 쿼리했습니다. 페타바이트 규모의 데이터 세트를 쿼리할 수 있습니다.

학습한 내용

  • SQL 구문을 사용하여 GitHub 커밋 기록 쿼리
  • 대규모 데이터 세트에 대한 통계를 얻기 위한 쿼리 작성

자세히 알아보기