BigQuery を使用して GitHub データをクエリする

BigQuery は、Google が低料金で提供する NoOps のフルマネージド分析データベースです。BigQuery では、データベース管理者や管理するインフラストラクチャを必要とせずに、テラバイト単位のデータをクエリできます。BigQuery では、扱いやすい SQL と、使用した分のみが課金対象となる課金モデルが採用されています。このような特徴を活かし、お客様は有用な情報を得るためのデータ分析に専念できます。

このラボでは、BigQuery で利用可能な一般公開データセットの 1 つである GitHub 一般公開データセットにクエリを実行する方法を説明します。

学習内容

  • BigQuery の使用
  • 大規模なデータセットから分析情報を得るためのクエリの作成

必要なもの

  • Google Cloud Platform プロジェクト
  • ChromeFirefox などのブラウザ

BigQuery を有効にする

Google アカウント(Gmail または Google Apps)をお持ちでない場合は、1 つ作成する必要があります。

  • 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.49 GB ですが、クエリで処理されたのは 35.8 MB のみです。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 データセットを使用して、GitHub の公開イベント(pull リクエスト、リポジトリのスター、問題のオープンなど)を分析できます。Python ソフトウェア財団の PyPI データセットを使用して、Python パッケージのダウンロード リクエストを分析できます。

BigQuery と SQL を使用して GitHub 一般公開データセットに対してクエリを実行しました。ペタバイト規模のデータセットをクエリできます。

学習した内容

  • SQL 構文を使用して GitHub のコミット レコードをクエリする
  • 大規模なデータセットから分析情報を得るためのクエリの作成

詳細