使用 BigQuery 查询 GitHub 数据

1. 简介

BigQuery 是 Google 推出的全托管式低成本分析数据库。借助 BigQuery,您可以查询 TB 级的数据,而无需数据库管理员或任何要管理的基础设施。BigQuery 使用熟悉的 SQL,并采用“按实际用量付费”的收费模式。BigQuery 让您可以专心分析数据,发掘有意义的数据洞见。

在此 Codelab 中,您将了解如何查询 GitHub 公共数据集BigQuery 中提供的众多公共数据集之一)。

学习内容

  • 如何使用 BigQuery
  • 如何编写查询来深入了解大型数据集

所需条件

  • Google Cloud 项目
  • 一个浏览器,例如 ChromeFirefox

2. 进行设置

启用 BigQuery

如果您还没有 Google 账号(Gmail 或 Google Apps),则必须创建一个

  • 登录 Google Cloud Platform 控制台 ( console.cloud.google.com),然后前往 BigQuery。您还可以在浏览器中输入以下网址,直接打开 BigQuery 网页界面。
https://console.cloud.google.com/bigquery
  • 接受服务条款。
  • 您必须先创建一个项目,然后才能使用 BigQuery。按照提示创建新项目。

选择项目名称,并记下项目 ID。5dHf3myqCTd3rm-fowZ_aU3An-T_NTgNnIZtQILio27us0xB3StjnSNnQraAnllEQCH4N2nMwLU1mnELwbNN85tbwNC_DbIdbxU8ufzJYW1MWpYu0hnbSrAajpAaRNs8UBeWFu68Aw

项目 ID 是一个在所有 Google Cloud 项目中均保持唯一的名称。它稍后将在此 Codelab 中被称为 PROJECT_ID

此 Codelab 使用的 BigQuery 资源在 BigQuery 沙盒限额范围内。不需要结算账号。如果您日后想移除沙盒限制,可以注册 Google Cloud Platform 免费试用,从而添加结算账号。

3. 预览 GitHub 数据

在 BigQuery 网页界面中打开 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 公开数据集中最常见的提交消息:

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

点击运行按钮。

几秒钟后,结果会显示在底部,其中会显示处理的数据量和所用时间。

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 Archive 数据集可用于分析 GitHub 上的公开活动,例如拉取请求、代码库星标和已打开的问题。Python 软件基金会的 PyPI 数据集可用于分析 Python 软件包的下载请求。

6. 恭喜!

您使用 BigQuery 和 SQL 查询了 GitHub 公共数据集。您可以查询 PB 级数据集!

所学内容

  • 使用 SQL 语法查询 GitHub 提交记录
  • 编写查询以深入了解大型数据集

了解详情