使用 BigQuery 查询 GitHub 数据

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

在本实验中,我们将了解如何查询 GitHub 公共数据集(这是 BigQuery 上提供的众多公共数据集之一)。

学习内容

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

所需条件

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

启用 BigQuery

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

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

    选择项目名称并记下项目 ID。


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

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

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

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

所学内容

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

了解详情