Truy vấn dữ liệu GitHub bằng BigQuery

BigQuery là cơ sở dữ liệu phân tích chi phí thấp, được quản lý hoàn toàn của Google. Với BigQuery, bạn có thể truy vấn nhiều terabyte dữ liệu mà không cần có quản trị viên cơ sở dữ liệu hoặc bất kỳ cơ sở hạ tầng nào để quản lý. BigQuery sử dụng SQL quen thuộc và mô hình tính phí chỉ dành cho những gì bạn sử dụng. BigQuery cho phép bạn tập trung phân tích dữ liệu để tìm những thông tin chi tiết có ý nghĩa.

Trong phòng thí nghiệm này, chúng tôi sẽ xem cách truy vấn tập dữ liệu công khai của GitHub, một trong nhiều tập dữ liệu công khai có sẵn trên BigQuery.

Kiến thức bạn sẽ học được

  • Sử dụng BigQuery
  • Viết một truy vấn để có được thông tin chi tiết về một tập dữ liệu lớn

Bạn cần có

  • Một dự án Google Cloud Platform
  • Một trình duyệt, chẳng hạn như Chrome hoặc Firefox

Bật BigQuery

Nếu chưa có Tài khoản Google (Gmail hoặc Google Apps), thì bạn phải tạo một tài khoản.

  • Đăng nhập vào bảng điều khiển của Google Cloud Platform (console.cloud.google.com) và chuyển đến BigQuery. Bạn cũng có thể mở giao diện người dùng web BigQuery trực tiếp bằng cách nhập URL sau vào trình duyệt của mình.
https://console.cloud.google.com/bigquery
  • Chấp nhận điều khoản dịch vụ.
  • Trước khi có thể sử dụng BigQuery, bạn phải tạo một dự án. Làm theo lời nhắc để tạo dự án mới.

    Chọn tên dự án và ghi lại mã dự án.


    Mã dự án là tên duy nhất trên tất cả các dự án Google Cloud. Lớp học này sẽ được gọi sau này trong lớp học lập trình này là PROJECT_ID.

Lớp học lập trình này sử dụng tài nguyên BigQuery với các giới hạn về hộp cát BigQuery. Không bắt buộc phải có tài khoản thanh toán. Nếu sau này muốn xóa các giới hạn hộp cát, bạn có thể thêm tài khoản thanh toán bằng cách đăng ký dùng thử miễn phí Google Cloud Platform.

Mở tập dữ liệu GitHub trong giao diện người dùng web của BigQuery.

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

Xem trước hình thức của dữ liệu.

Mở Trình chỉnh sửa truy vấn,

nhập truy vấn này để tìm các thông báo cam kết phổ biến nhất trong tập dữ liệu công khai của 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

Vì tập dữ liệu GitHub rất lớn, nên bạn nên sử dụng một tập dữ liệu mẫu nhỏ hơn trong khi thử nghiệm để tiết kiệm chi phí. Sử dụng các byte được xử lý bên dưới trình chỉnh sửa để ước tính chi phí truy vấn.

Nhấp vào nút Chạy truy vấn.

Trong vài giây, kết quả sẽ được liệt kê ở dưới cùng và cũng sẽ cho bạn biết lượng dữ liệu đã được xử lý và thời gian xử lý:

Mặc dù bảng sample_commits là 2, 49 GB nhưng truy vấn chỉ xử lý 35, 8 MB. BigQuery chỉ xử lý số byte từ các cột dùng trong truy vấn, nên tổng lượng dữ liệu được xử lý có thể nhỏ hơn đáng kể so với kích thước bảng. Với tính năng phân nhómphân vùng, lượng dữ liệu được xử lý có thể giảm hơn nữa.

Bây giờ, hãy thử truy vấn một tập dữ liệu khác, chẳng hạn như một trong các tập dữ liệu công khai khác.

Ví dụ: truy vấn này tìm thấy các dự án phổ biến hoặc không được duy trì trong tập dữ liệu công khai của Libraries.io vẫn được dùng làm phần phụ thuộc trong các dự án khác.

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

Các tổ chức khác cũng đã hiển thị công khai dữ liệu của họ trên BigQuery. Ví dụ: bạn có thể dùng tập dữ liệu Lưu trữ GitHub để phân tích các sự kiện công khai trên GitHub, chẳng hạn như yêu cầu lấy dữ liệu, số sao lưu trữ và các vấn đề được mở. Tập dữ liệu PyPI của Tổ chức Phần mềm Python có thể dùng để phân tích yêu cầu tải xuống cho các gói Python.

Bạn đã sử dụng BigQuery và SQL để truy vấn tập dữ liệu công khai của GitHub. Bạn có thể truy vấn các tập dữ liệu cỡ petabyte!

Những điều chúng tôi đã đề cập

  • Sử dụng cú pháp SQL để truy vấn bản ghi cam kết GitHub
  • Viết một truy vấn để có được thông tin chi tiết về một tập dữ liệu lớn

Tìm hiểu thêm