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

1. はじめに

BigQuery は、Google が提供する低コストでフルマネージドの分析データベースです。BigQuery では、データベース管理者やインフラストラクチャの管理を必要とすることなく、テラバイト規模のデータに対してクエリを実行できます。BigQuery では、使い慣れた SQL と従量課金制の課金モデルが使用されます。このような特徴を活かし、お客様は有用な情報を得るためのデータ分析に専念できます。

この Codelab では、GitHub 一般公開データセットに対してクエリを実行します。これは、BigQuery で公開されている多くの一般公開データセットの一つです。

学習内容

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

必要なもの

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

2. セットアップする

BigQuery を有効にする

Google アカウント(Gmail や Google Apps)をまだお持ちでない場合は、アカウントを作成してください。

  • Google Cloud Platform コンソール(console.cloud.google.com)にログインし、BigQuery に移動します。ブラウザに次の URL を入力して、BigQuery ウェブ UI を直接開くこともできます。
https://console.cloud.google.com/bigquery
  • 利用規約に同意します。
  • BigQuery を使用するには、その前にプロジェクトを作成する必要があります。プロンプトに従って新しいプロジェクトを作成します。

プロジェクト名を選択し、プロジェクト ID をメモします。5dHf3myqCTd3rm-fowZ_aU3An-T_NTgNnIZtQILio27us0xB3StjnSNnQraAnllEQCH4N2nMwLU1mnELwbNN85tbwNC_DbIdbxU8ufzJYW1MWpYu0hnbSrAajpAaRNs8UBeWFu68Aw

プロジェクト ID は、すべての Google Cloud プロジェクトで一意の名前です。以降、このコードラボでは PROJECT_ID と呼びます。

この Codelab では、BigQuery サンドボックスの上限が設定された BigQuery リソースを使用します。請求先アカウントは必要ありません。後でサンドボックスの制限を削除したい場合は、Google Cloud Platform の無料トライアルに登録して請求先アカウントを追加できます。

3. GitHub データをプレビュー

BigQuery ウェブ UI で GitHub データセットを開きます。

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

データがどのように表示されるのか、簡単なプレビューで確認しましょう。

ed0b9fce5eab1c6b.png

4. GitHub データにクエリを実行する

クエリエディタを開きます。

759423d320075d96.png

次のクエリを入力して、GitHub 一般公開データセットで最も一般的な commit メッセージを検索します。

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 のデータセットが大きいことを考慮すると、費用を節約するために、テスト時に使用するサンプル データセットを小さくすることをおすすめします。エディタの下で処理されたバイト数を使用して、クエリ費用を見積もります。

fb66b7e9c6e838c.png

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

数秒後に結果が下部に表示され、処理されたデータ量と所要時間が表示されます。

3ce1a59763d0dab5.png

sample_commits テーブルは 2.49 GB ですが、このクエリで処理されたのは 35.8 MB のみです。BigQuery はクエリで使用される列のバイトのみを処理するため、処理されるデータの総量はテーブルサイズよりも大幅に小さくなる可能性があります。クラスタリングパーティショニングを使用すると、処理されるデータ量をさらに削減できます。

5. その他の一般公開データ

次に、別の一般公開データセットなど、別のデータセットに対してクエリを実行します。

たとえば、次のクエリは、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 の GH アーカイブ データセットを使用すると、pull リクエスト、リポジトリのスター、未解決の問題など、GitHub で公開されているイベントを分析できます。Python Software Foundation の PyPI データセットを使用して、Python パッケージのダウンロード リクエストを分析できます。

6. 完了

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

学習した内容

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

詳細