Google BigQuery - Bài học 7: Khởi tạo môi trường làm việc – Sử dụng BigQuery Studio, bq CLI trên Terminal và cấu hình Google Cloud SDK
Chào anh em! Qua 6 bài học đầu tiên, chúng ta đã trang bị từ tận gốc rễ kiến trúc Colossus, Capacitor, Dremel, Jupiter cho đến cách quy hoạch Multi-Project và bài toán kinh tế chống "cháy túi" trên BigQuery. Lý thuyết nền tảng như vậy là quá đủ rồi, hôm nay chúng ta chính thức xắn tay áo lên, mở trình duyệt và bật Terminal để chạm tay vào hệ thống thực tế!
Nếu bạn là một Data Analyst, có lẽ 99% thời gian bạn chỉ cần mở giao diện web của Google Cloud là đủ. Nhưng với anh em xuất thân từ Backend Developer hay Data Engineer – những người vốn đã quen với nhịp điệu gõ phím trên VS Code, Cursor hay WSL2 Ubuntu – việc phải cầm chuột click từng cái trên giao diện web để tạo 50 cái bảng hay import hàng trăm file dữ liệu là một sự tra tấn thực sự!
Bài học hôm nay sẽ hướng dẫn anh em thiết lập một không gian làm việc "hai tay hai súng" chuẩn kỹ sư: Vừa khai thác tối đa các tính năng ẩn đắt giá trên giao diện BigQuery Studio, vừa làm chủ công cụ dòng lệnh bq CLI (Google Cloud SDK) để tự động hóa mọi tác vụ ngay từ Terminal của bạn!
1. Vũ khí số 1: BigQuery Studio (Web UI) – Không chỉ là chỗ gõ SQL!
Khi bạn truy cập vào [console.cloud.google.com/bigquery](https://console.cloud.google.com/bigquery), giao diện trước mắt bạn hiện nay được Google gọi là BigQuery Studio (nâng cấp từ SQL Workspace cũ). Nó không còn đơn thuần là một ô text để gõ lệnh SELECT nữa, mà đã trở thành một IDE dữ liệu hoàn chỉnh (tích hợp cả SQL, Python Notebooks/Colab Enterprise, và Dataform).
Dưới đây là 4 khu vực "ăn tiền" trên giao diện BigQuery Studio mà anh em kỹ sư cần nắm rõ thay vì chỉ bấm mỗi nút Run:
Plaintext
+-----------------------------------------------------------------------------------+
| [ Explorer ] | [ Tab: Truy vấn SQL ] (V) Valid: 12.4 MB [RUN] |
| ---------------------- | -------------------------------------------------------- |
| + my-storage-project | 1 SELECT status, COUNT(*) |
| + raw_ecommerce | 2 FROM `my-storage-project.raw_ecommerce.orders` |
| - orders (Table) | 3 WHERE created_at >= '2026-10-01' |
| - users (Table) | 4 GROUP BY status; |
| | -------------------------------------------------------- |
| [ Job History ] | [ Results ] | [ JSON ] | [ EXECUTION DETAILS ] | [Schema]|
| [ Saved Queries ] | - Elapsed time: 0.8 sec | - Slot time consumed: 14 sec |
| | - Bytes shuffled: 1.2 MB | - Stages: S00: Input -> S01 |
+-----------------------------------------------------------------------------------+
1.1. Tab Preview – Tuyệt chiêu xem dữ liệu tốn 0 đồng
Khi click vào một bảng bất kỳ (ví dụ bảng orders), bạn sẽ thấy các tab: Schema, Details, và Preview.
-
Sai lầm của người mới: Mở cửa sổ Query gõ
SELECT * FROM orders LIMIT 50;để xem bảng có những dữ liệu gì Mất tiền quét toàn bộ các cột của bảng! -
Cách làm chuẩn: Bấm thẳng vào tab
Preview. BigQuery sẽ đọc trực tiếp từ các khối lưu trữ Capacitor trên Colossus mà không khởi chạy bộ máy Dremel, giúp bạn xem trước hàng trăm dòng dữ liệu với chi phí 0 byte (Miễn phí 100%)!
1.2. Tab Details – Đọc "Sổ đỏ" của bảng (Logical vs Physical Bytes)
Trong tab Details của một bảng, hãy chú ý mục Storage info:
-
Nó cho bạn biết chính xác bảng đang có bao nhiêu dòng (
Number of rows). -
So sánh trực tiếp giữa Total logical bytes (dung lượng chưa nén) và Total physical bytes (dung lượng thực tế sau khi Capacitor nén + Time Travel). Như đã học ở Bài 6, nhìn vào 2 con số này bạn sẽ biết ngay bảng của mình đang đạt tỷ lệ nén bao nhiêu lần (thường là 5x - 10x) để quyết định xem có nên chuyển Dataset sang chế độ Physical Billing hay không!
1.3. Tab Execution details & Execution graph – Máy chụp X-Quang câu truy vấn
Sau khi chạy xong một câu lệnh SQL, đừng chỉ nhìn vào tab Results. Hãy bấm ngay sang tab Execution details bên cạnh:
-
Elapsed time: Thời gian thực tế bạn phải ngồi chờ (ví dụ:
1.2 sec). -
Slot time consumed: Tổng thời gian CPU của toàn bộ các Slots cộng lại (ví dụ:
45 sec).(Thấy sự kỳ diệu chưa? Nhờ hàng chục Slots của Dremel chạy song song, 45 giây làm việc của CPU được nén lại chỉ còn 1.2 giây ngoài đời thực!)
-
Bytes shuffled: Lượng dữ liệu phải bắn chéo qua mạng Jupiter (như đã học ở Bài 4). Nếu con số này quá lớn hoặc thanh trạng thái ở một Stage bị đỏ, bạn biết ngay câu lệnh đang bị nghẽn ở bước
JOINhoặcORDER BY.
1.4. Nút More -> Query settings – Khóa van an toàn
Trước khi chạy các câu lệnh thử nghiệm phức tạp, hãy bấm vào More Query settings:
-
Luôn tích chọn Use cached results (Sử dụng kết quả đệm).
-
Mở mục Advanced options Điền vào ô Maximum bytes billed (ví dụ
1073741824tương đương 1 GB) để đảm bảo câu lệnh không bao giờ quét lố ngân sách.
2. Vũ khí số 2: Cài đặt Google Cloud SDK & Làm chủ Terminal
Giao diện web rất đẹp, nhưng khi bạn muốn viết một bash script tự động backup bảng, đẩy dữ liệu từ local lên BigQuery, hoặc kiểm tra nhanh cấu trúc bảng ngay trong cửa sổ VS Code / WSL2 Terminal thì Google Cloud SDK chính là chân ái.
Khi cài đặt Google Cloud SDK, bạn sẽ nhận được 2 công cụ dòng lệnh (CLI) quan trọng:
-
gcloud: Quản lý chung toàn bộ hạ tầng GCP (Auth, Project, IAM, Compute...). -
bq: Công cụ CLI chuyên biệt được viết bằng Python dành riêng để tương tác với mọi ngóc ngách của Google BigQuery.
Bước 1: Cài đặt và Đăng nhập (Trên Ubuntu / WSL2 / macOS)
Nếu máy bạn đã cài đặt gcloud, chỉ cần chạy chuỗi lệnh khởi tạo sau trên Terminal:
Bash
# 1. Đăng nhập tài khoản Google của bạn (Sẽ mở trình duyệt để xác thực)
gcloud auth login
# 2. Cấp quyền Application Default Credentials (Cực kỳ quan trọng khi bạn code Golang/Node.js/Python ở local muốn gọi thẳng lên BigQuery mà không cần tải file JSON Key!)
gcloud auth application-default login
# 3. Đặt Project mặc định (Ưu tiên chọn Compute Project của bạn)
gcloud config set project my-compute-project-id
Bước 2: Cấu hình file .bigqueryrc – Bí kíp của dân chuyên nghiệp
Mỗi lần gõ lệnh bq, thay vì phải truyền đi truyền lại các cờ (flags) như --location=asia-southeast1 hay --use_legacy_sql=false, bạn hãy tạo một file cấu hình mặc định tại thư mục gốc của user (~/.bigqueryrc):
Bash
cat << 'EOF' > ~/.bigqueryrc
# Cấu hình chung cho mọi lệnh bq
location = asia-southeast1
[query]
# Bắt buộc dùng GoogleSQL chuẩn mới, tắt Legacy SQL cũ
use_legacy_sql = false
# Giới hạn an toàn: Chặn mọi câu query trên CLI nếu quét vượt quá 5GB
maximum_bytes_billed = 5368709120
EOF
Từ giây phút này, mọi lệnh bq bạn gõ trên Terminal đều tự động hiểu vùng dữ liệu là Singapore (asia-southeast1), dùng chuẩn GoogleSQL và có sẵn "áo giáp" bảo vệ ví tiền!
3. Thực chiến với bq CLI: 6 câu lệnh anh em sẽ dùng hàng ngày
Hãy quên những cú click chuột rườm rà đi, dưới đây là cách bạn điều khiển BigQuery hoàn toàn bằng bàn phím:
3.1. Khám phá Datasets và Tables (bq ls & bq show)
Bash
# Liệt kê toàn bộ Datasets trong Project hiện tại
bq ls
# Liệt kê các bảng bên trong dataset 'raw_ecommerce'
bq ls my-storage-project:raw_ecommerce
# Xem chi tiết thông tin bảng và lấy Schema định dạng JSON (Cực tiện để copy sang môi trường khác)
bq show --format=prettyjson my-storage-project:raw_ecommerce.orders
(Lưu ý cú pháp đặc trưng của bq CLI: Ngăn cách giữa project_id và dataset_name là dấu hai chấm :, còn giữa dataset_name và table_name là dấu chấm ., ví dụ: project:dataset.table).
3.2. Tạo Dataset và Bảng mới siêu tốc (bq mk)
Giả sử chúng ta muốn tạo cấu trúc 3 tầng Dataset (bronze, silver, gold) như đã học ở Bài 5 chỉ trong 3 giây:
Bash
# Tạo Dataset tầng Bronze ở vùng Singapore, kèm mô tả
bq mk --dataset \
--location=asia-southeast1 \
--description="Tang luu tru du lieu tho tu CDC" \
my-storage-project:bronze_ecommerce
# Tạo một bảng có Partition theo ngày và Clustering theo status ngay từ dòng lệnh
bq mk --table \
--time_partitioning_field=created_at \
--time_partitioning_type=DAY \
--clustering_fields=status,user_id \
--require_partition_filter=true \
my-storage-project:bronze_ecommerce.orders \
order_id:INT64,user_id:INT64,status:STRING,total_amount:NUMERIC,created_at:TIMESTAMP
3.3. Tuyệt chiêu bq head: Xem trước dữ liệu miễn phí ngay trên Terminal!
Tương đương với nút Preview trên giao diện web, lệnh bq head đọc thẳng vào file Capacitor mà không tốn một xu tiền query nào:
Bash
# Xem 10 dòng đầu tiên của bảng orders hoàn toàn miễn phí
bq head -n 10 my-storage-project:bronze_ecommerce.orders
3.4. Chạy thử kiểm tra dung lượng (--dry_run) và Thực thi SQL (bq query)
Trước khi chạy một câu lệnh SQL từ Terminal hoặc trong pipeline CI/CD, hãy luôn dùng cờ --dry_run để hỏi BigQuery xem câu lệnh này sẽ ngốn bao nhiêu byte:
Bash
# 1. Chạy thử (Dry Run) - Trả về số byte sẽ quét trong 0.5 giây, tốn 0 đồng!
bq query --dry_run \
'SELECT status, SUM(total_amount) FROM `my-storage-project.bronze_ecommerce.orders` WHERE DATE(created_at) = "2026-10-18" GROUP BY status'
# Output mẫu: Query successfully validated. Assuming the tables are not modified, running this query will process 1452840 bytes of data.
# 2. Khi thấy số byte an toàn rồi, bỏ cờ --dry_run để chạy thật (Có thể xuất ra JSON hoặc CSV)
bq query --format=prettyjson \
'SELECT status, SUM(total_amount) as revenue FROM `my-storage-project.bronze_ecommerce.orders` WHERE DATE(created_at) = "2026-10-18" GROUP BY status'
3.5. Nạp dữ liệu (bq load) từ máy Local hoặc GCS lên BigQuery
Anh em có một file orders_dump.parquet hoặc orders.csv dưới máy local (hoặc trên Google Cloud Storage) và muốn đẩy thẳng vào bảng BigQuery (Thao tác Batch Load này miễn phí 100%):
Bash
# Nạp file Parquet vào bảng, tự động nhận diện Schema
bq load \
--source_format=PARQUET \
--autodetect \
my-storage-project:bronze_ecommerce.orders \
gs://my-bucket-name/data/orders_2026_10.parquet
4. Mẹo nâng cao cho Developer: Đưa BigQuery vào thẳng VS Code / Cursor!
Nếu bạn không muốn phải chuyển cửa sổ qua lại giữa trình duyệt Chrome và trình soạn thảo code (VS Code / Cursor), bạn có thể biến IDE của mình thành một trạm điều khiển BigQuery thực thụ:
-
Sử dụng Extension chính chủ "Google Cloud Code" hoặc "BigQuery Runner":
-
Chỉ cần cài Extension này trên VS Code, nó sẽ tự động nhận diện chứng chỉ
gcloud auth application-default loginmà bạn vừa chạy ở Bước 1. -
Bạn có thể mở một file
.sqlngay trong project code của mình, gõ câu lệnh, nhìn thấy dung lượng Dry Run hiển thị ngay dưới thanh Status Bar của VS Code, bấm phím tắt chạy query và xem bảng kết quả ngay ở khung bên phải!
-
-
Quản lý SQL bằng Git:
- Thay vì lưu các câu truy vấn quan trọng ở mục
Saved Queriestrên web (rất khó kiểm soát phiên bản khi làm việc nhóm), hãy lưu toàn bộ các file.sqltạo bảng (DDL), tạo View vào một Git Repository và dùngbq query < file_script.sqlđể chạy tự động qua CI/CD (Jenkins / GitHub Actions / GitLab CI).
- Thay vì lưu các câu truy vấn quan trọng ở mục
Tổng kết Bài học 7
Một kỹ sư dữ liệu hay Backend lành nghề luôn biết chọn đúng công cụ cho đúng việc:
-
Dùng BigQuery Studio (Web UI) khi cần khám phá dữ liệu trực quan, tận dụng tab
Preview(xem miễn phí),Details(kiểm tra tỷ lệ nén Physical vs Logical) vàExecution Graph(soi nút thắt cổ chai khi tối ưu query). -
Dùng
bqCLI & Google Cloud SDK trên Terminal khi cần thao tác nhanh bằng bàn phím, cấu hình sẵn file~/.bigqueryrcđể khóa trầnmaximum_bytes_billed, dùngbq headđể đọc mẫu miễn phí và viết script tự động hóa quy trình nạp/xuất dữ liệu.
Bây giờ, môi trường làm việc trên trình duyệt và Terminal của bạn đã sẵn sàng chiến đấu! Nhưng có một vấn đề nhỏ: "Bảng orders của mình mới tạo chỉ có vài dòng dữ liệu mẫu, làm sao để trải nghiệm cảm giác chạy một câu lệnh SQL quét qua hàng tỷ dòng dữ liệu nặng hàng Terabyte xem Dremel nó nhanh cỡ nào mà không tốn tiền?"
Câu trả lời sẽ có ngay trong bài học cuối cùng của Phần 1! Hẹn gặp lại anh em ở 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í!
All Rights Reserved