BigQuery を使用して GitHub データに対してクエリを実行する

BigQuery は、Google が低料金で提供する NoOps のフルマネージド分析データベースです。テラバイト単位のデータを BigQuery でクエリできるため、データベース管理者やインフラストラクチャの管理は不要です。BigQuery では使い慣れた SQL と従量課金モデルを使用そのため、ユーザーは有用な情報を得るためのデータの分析に専念することができます。

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

ラボの内容

  • BigQuery の使用
  • 大規模なデータセットに対する分析情報を得るクエリの作成

必要なもの

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

BigQuery を有効にする

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

  • Google Cloud Platform Console(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 のデータセットは大きいので、コストを削減しながら、より小さなサンプルのデータセットを使用するのが有効です。エディタの下で処理されたバイト数を使用してクエリ費用を見積もる。

[Run query] ボタンをクリックします。

数秒後に結果が一覧に表示され、処理したデータの量と所要時間も表示されます。

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 アーカイブ データセットを使用して、GitHub で公開イベント(pull リクエスト、リポジトリのスター、オープンしている問題など)を分析できます。Python Software Foundation の PyPI データセットを使用して、Python パッケージのダウンロード リクエストを分析できます。

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

学習した内容

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

詳細