Google BigQuery - Bài học 8: BigQuery Sandbox & Public Datasets – Thực hành truy vấn tập dữ liệu tỷ dòng hoàn toàn miễn phí
Chào anh em! Chúng ta đã đi qua trọn vẹn 7 bài học đầu tiên của Phần 1: Kiến trúc cốt lõi & Tư duy OLAP. Từ việc hiểu sâu tận tầng vật lý của Colossus, Capacitor, Dremel, Jupiter cho đến quy hoạch dự án chuẩn doanh nghiệp và làm chủ lệnh bq CLI trên Terminal.
Tuy nhiên, có một rào cản tâm lý cực lớn đối với bất kỳ ai mới bắt đầu học Google BigQuery: "Muốn luyện tập viết SQL, muốn test thử tốc độ thực thi trên hàng tỷ dòng, hay muốn kiểm chứng xem câu lệnh JOIN của mình có bị nghẽn Shuffle hay không... thì lấy đâu ra dữ liệu lớn hàng Terabyte mà thử? Chẳng lẽ phải tự bỏ tiền túi ra nạp dữ liệu vào rồi bấm chạy thử rồi... mất tiền ngu vì viết sai cú pháp?"
Đừng lo! Google thừa hiểu nỗi sợ "cháy túi" của các lập trình viên mới. Đó là lý do họ sinh ra hai thứ cực kỳ quyền lực: BigQuery Sandbox (chơi không cần thẻ tín dụng) và Public Datasets (kho tàng dữ liệu công khai khổng lồ chứa hàng tỷ dòng hoàn toàn miễn phí).
Bài học hôm nay sẽ hướng dẫn anh em cách "lách luật" để vọc vạch BigQuery thoải mái, chạy thử câu lệnh trên quy mô tỷ dòng mà hóa đơn cuối tháng vẫn bằng 0 đồng!
1. BigQuery Sandbox: Chơi không cần thẻ tín dụng, không sợ phát sinh phí
Nếu bạn vừa lập một tài khoản Google Cloud mới tinh và chưa muốn gắn thẻ Visa/Mastercard vào vì sợ sơ sẩy một cú click là mất tiền, BigQuery Sandbox chính là cứu cánh tuyệt vời nhất.
Sandbox là gì và nó cho bạn những quyền lợi gì?
-
Không cần Billing Account: Bạn không cần liên kết thẻ ngân hàng vào Google Cloud. Chỉ cần có một tài khoản Google thông thường là bật được BigQuery lên dùng ngay.
-
Quyền lợi miễn phí mỗi tháng (Sandbox Limits):
-
10 GB dung lượng lưu trữ miễn phí liên tục trên Colossus.
-
1 TB dữ liệu quét (Bytes Processed) miễn phí mỗi tháng cho các câu lệnh truy vấn (
SELECT).
-
-
Điểm hạn chế cần lưu ý của Sandbox:
-
Vì không gắn thẻ thanh toán, tài khoản Sandbox của bạn sẽ có một số giới hạn như: Không dùng được tính năng streaming insert liên tục tốc độ cao, không tạo được các Scheduled Queries (lịch chạy tự động định kỳ), và quan trọng nhất: Sau 60 ngày nếu bạn không nâng cấp lên tài khoản trả phí, các Dataset và bảng trong Sandbox sẽ bị xóa tự động.
-
Tuy nhiên, đối với mục đích học tập, viết thử SQL và vọc vạch trong vài tuần đầu, Sandbox là quá đủ để bạn vùng vẫy!
-
2. Kho báu Public Datasets: Vẫy vùng giữa hàng tỷ dòng dữ liệu hoàn toàn miễn phí
Google hiểu rằng một Cloud Data Warehouse chỉ thực sự mạnh khi có dữ liệu để phân tích. Do đó, họ đã gom nhặt, chuẩn hóa và lưu trữ sẵn hàng trăm tập dữ liệu công khai cực kỳ giá trị từ khắp nơi trên thế giới (từ dữ liệu không gian vũ trụ NASA, thông tin thời tiết toàn cầu, dữ liệu GitHub, Hacker News, đến thông tin chuyến bay FAA) trực tiếp vào trong một Project chung mang tên bigquery-public-data.
Kho báu này có gì thú vị cho dân Backend / Data Engineering?
-
Quy mô khủng khiếp: Nhiều bảng chứa từ vài trăm triệu cho đến hàng chục tỷ dòng dữ liệu, nặng hàng trăm Gigabyte đến Terabyte.
-
Truy vấn xuyên Project (Cross-project Querying): Bạn đang đứng ở Project cá nhân của mình, nhưng bạn hoàn toàn có thể viết câu lệnh chọc thẳng sang kho dữ liệu công khai này mà không cần xin phép ai cả!
-
Cơ chế hưởng lợi từ 1 TB Free Tier: Mỗi tháng Google tặng bạn 1 TB quét dữ liệu miễn phí. Khi bạn truy vấn các Public Datasets, dung lượng quét sẽ được trừ trực tiếp vào hạn mức 1 TB miễn phí này. (Chỉ cần bạn cẩn thận dùng các mẹo
LIMIT,TABLESAMPLEhoặcPartition Filter, bạn có thể vọc vạch cả năm trời mà không tốn một xu).
3. Thực hành thực chiến: Truy vấn 10 tỷ dòng dữ liệu trong 3 giây như thế nào?
Để anh em không phải bỡ ngỡ, hãy mở ngay BigQuery Studio lên (hoặc gõ lệnh bq query) và chạy thử 3 bài tập thực chiến dưới đây trên các Public Datasets có sẵn!
Bài tập 1: Khám phá cấu trúc một Public Dataset khổng lồ
Hãy tìm đến project bigquery-public-data, mở dataset austin_311 (dữ liệu phản ánh dịch vụ đô thị thành phố Austin) hoặc github_repos (kho lưu trữ mã nguồn mở trên GitHub chứa hàng tỷ dòng commit).
Hãy thử chạy một câu lệnh đếm số lượng bản ghi trên bảng github_repos.commits (bảng này có hơn 2 tỷ dòng):
SQL
-- Đếm tổng số lượng bản ghi của bảng Github Commits (Hơn 2 tỷ dòng)
SELECT COUNT(*) AS total_commits
FROM `bigquery-public-data.github_repos.commits`;
-
Điều gì xảy ra? Chỉ trong khoảng 1.5 đến 2 giây, Dremel huy động hàng ngàn Slots quét qua hàng trăm GB dữ liệu nén của cột và trả về con số chính xác hơn 2 tỷ dòng.
-
Nhìn sang tab Execution Details, bạn sẽ thấy lượng dữ liệu quét thực tế rất nhỏ nhờ định dạng nén Capacitor.
Bài tập 2: Kỹ thuật TABLESAMPLE – Xem trước mẫu dữ liệu siêu lớn mà tốn cực ít tiền
Giả sử bạn muốn xem cấu trúc ngẫu nhiên của một bảng nặng 500 GB nhưng không muốn quét toàn bộ bảng. Thay vì dùng LIMIT 10 (như đã phân tích ở các bài trước là vẫn phải quét toàn bộ bảng rồi mới cắt 10 dòng), hãy dùng cú pháp TABLESAMPLE SYSTEM:
SQL
-- Lấy ngẫu nhiên khoảng 1% dung lượng của bảng GitHub Commits để kiểm tra cấu trúc
SELECT repo_name, author.name, committer.date
FROM `bigquery-public-data.github_repos.commits`
TABLESAMPLE SYSTEM (1 PERCENT)
LIMIT 10;
- Sức mạnh của
TABLESAMPLE: Thay vì đọc toàn bộ bảng, Dremel chỉ chọn ngẫu nhiên một vài khối (Blocks) dữ liệu trên Colossus để đọc. Giúp bạn tiết kiệm tới 99% lượng bytes quét so với câu lệnh thông thường!
Bài tập 3: Viết câu lệnh phân tích nâng cao (Window Function + Regex trên dữ liệu lớn)
Hãy thử một câu lệnh phức tạp hơn, kết hợp hàm xử lý chuỗi và Window Function để tìm ra top các domain email hay được dùng trong các commit mã nguồn:
SQL
SELECT
REGEXP_EXTRACT(author.email, r'@(.+)$') AS email_domain,
COUNT(*) AS commit_count
FROM `bigquery-public-data.github_repos.commits`
WHERE author.date >= '2025-01-01'
GROUP BY email_domain
ORDER BY commit_count DESC
LIMIT 10;
Bấm Run và tận hưởng cảm giác phân tích dữ liệu quy mô Petabyte chỉ với vài dòng SQL quen thuộc!
4. Năm "Mẹo vàng" giúp bạn luyện tập BigQuery mà không bao giờ sợ chạm trán hóa đơn
Trước khi chúng ta khép lại Phần 1 để bước sang Phần 2 (Làm chủ GoogleSQL & Xử lý dữ liệu bán cấu trúc), hãy ghi nhớ 5 quy tắc vàng sống còn này khi vọc vạch Public Datasets:
-
Luôn bật Dry Run (
--dry_runhoặc nhìn góc trên bên phải): Tập phản xạ nhìn số lượng Gigabyte/Terabyte sẽ bị quét trước khi bấm nútRun. -
Tận dụng tối đa bộ lọc thời gian (
WHERE date >= ...): Đừng bao giờ chạy câu lệnhSELECTtrên toàn bộ bảng lịch sử của các Public Dataset nếu không có điều kiệnWHEREtheo ngày/tháng, bởi vì dung lượng của chúng rất lớn, quét toàn bảng 1-2 lần là bạn sẽ cạn sạch hạn mức 1 TB miễn phí trong tháng! -
Sử dụng lệnh
bq headtrên Terminal: Như đã học ở Bài 7, nếu chỉ muốn xem 5 dòng đầu tiên của bất kỳ bảng công khai nào, hãy gõ ngay trên Terminal:Bash
bq head -n 5 bigquery-public-data:github_repos.commitsThao tác này chạy trực tiếp từ Metadata của Colossus, chuẩn xác, nhanh chóng và tốn đúng 0 byte (0 đồng).
-
Chia nhỏ bài toán thành các Common Table Expressions (CTE): Khi viết các câu lệnh phức tạp, hãy tách nhỏ logic bằng mệnh đề
WITH ... AS (...)để dễ debug và giúp trình tối ưu hóa của Dremel dễ dàng cắt tỉa các bước trung gian thừa thãi. -
Tham gia chương trình Google Cloud Innovators / Free Tier: Nếu bạn dùng tài khoản cá nhân, hãy theo dõi hạn mức quota hàng tháng của mình trong tab Billing / Quotas để không bị ngạc nhiên khi chạm ngưỡng 1 TB miễn phí.
Tổng kết Phần 1 & Chào mừng đến với Phần 2!
Xin chúc mừng anh em! Chúng ta đã hoàn thành xuất sắc Phần 1: Kiến trúc cốt lõi & Tư duy OLAP (Từ Bài 1 đến Bài 8):
-
Đã hiểu rõ tại sao MySQL/PostgreSQL chết sấp mặt khi làm báo cáo (Bài 1).
-
Đã mổ xẻ tường tận "tứ trụ" Colossus, Capacitor, Dremel, Jupiter (Bài 2, 3, 4).
-
Đã biết quy hoạch Project, Dataset 3 tầng Bronze-Silver-Gold chuẩn doanh nghiệp và bảo mật dữ liệu bằng Authorized Views (Bài 5).
-
Đã nắm vững bài toán kinh tế giữa On-Demand và Editions (Slots), nắm trong tay 5 chốt chặn chống "cháy túi" (Bài 6).
-
Đã thuần phục môi trường làm việc từ giao diện BigQuery Studio đến Terminal
bqCLI (Bài 7). -
Và cuối cùng, đã biết cách vùng vẫy với hàng tỷ dòng dữ liệu miễn phí trên Sandbox & Public Datasets (Bài 8).
Nền móng kỹ thuật hệ thống đã vô cùng vững chắc! Bắt đầu từ Phần 2, chúng ta sẽ chính thức bước vào thế giới của GoogleSQL – nơi anh em sẽ học cách xử lý những cấu trúc dữ liệu cực kỳ độc đáo mà các RDBMS truyền thống phải "bó tay chịu trói": từ kiểu dữ liệu lồng nhau ARRAY, STRUCT, xử lý JSON nguyên bản cho đến các thuật toán khử trùng lặp và Window Functions đỉnh cao.
Hẹn gặp lại anh em ở Bài học 9: GoogleSQL vs Legacy SQL – Các kiểu dữ liệu đặc trưng trong BigQuery và lưu ý về INT64, FLOAT64, NUMERIC!
All Rights Reserved