1. Giới thiệu
BigQuery là cơ sở dữ liệu phân tích chi phí thấp do Google quản lý hoàn toàn, NoOps. Với BigQuery, bạn có thể truy vấn nhiều terabyte dữ liệu mà không cần quản trị viên cơ sở dữ liệu hay cơ sở hạ tầng. BigQuery sử dụng SQL quen thuộc và mô hình tính phí chỉ trả tiền theo giá bạn sử dụng. BigQuery giúp bạn tập trung vào việc phân tích dữ liệu để tìm ra những thông tin chi tiết có ý nghĩa. Trong lớp học lập trình này, bạn sẽ sử dụng công cụ dòng lệnh bq để tải tệp CSV cục bộ vào bảng BigQuery mới.
Kiến thức bạn sẽ học được
- Cách sử dụng công cụ dòng lệnh bq cho BigQuery
- Cách tải tệp dữ liệu cục bộ vào bảng BigQuery
Bạn cần có
- Một dự án trên Google Cloud
- Một trình duyệt, chẳng hạn như Google Chrome
2. Bắt đầu thiết lập
Bật BigQuery
Nếu chưa có Tài khoản Google, bạn phải tạo một tài khoản.
- Đăng nhập vào Google Cloud Console rồi chuyển đến BigQuery. Bạn cũng có thể mở trực tiếp giao diện người dùng web BigQuery bằng cách nhập URL sau đây vào trình duyệt.
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 riêng biệt của tất cả dự án trên Google Cloud. Lớp này sẽ được đề cập sau 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 cùng với hạn mức 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 loại bỏ 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.
Cloud Shell
Bạn sẽ sử dụng Cloud Shell, một môi trường dòng lệnh chạy trong Google Cloud.
Kích hoạt Cloud Shell
- Trong Cloud Console, hãy nhấp vào Kích hoạt Cloud Shell .
Nếu trước đây bạn chưa từng khởi động Cloud Shell, thì bạn sẽ thấy một màn hình trung gian (dưới màn hình đầu tiên) mô tả về ứng dụng này. Nếu trường hợp đó xảy ra, hãy nhấp vào Tiếp tục (và bạn sẽ không thấy thông báo đó nữa). Màn hình một lần đó sẽ có dạng như sau:
Quá trình cấp phép và kết nối với Cloud Shell chỉ mất vài phút.
Máy ảo này chứa tất cả các công cụ phát triển mà bạn cần. Dịch vụ này cung cấp thư mục gốc 5 GB ổn định và chạy trong Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Trong lớp học lập trình này, đa số mọi người đều có thể thực hiện chỉ bằng một trình duyệt hoặc Chromebook.
Sau khi kết nối với Cloud Shell, bạn sẽ thấy mình đã được xác thực và dự án đã được đặt thành mã dự án.
- Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:
gcloud auth list
Kết quả lệnh
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Chạy lệnh sau trong Cloud Shell để xác nhận rằng lệnh gcloud biết về dự án của bạn:
gcloud config list project
Kết quả lệnh
[core] project = <PROJECT_ID>
Nếu chưa, bạn có thể thiết lập chế độ này bằng lệnh sau:
gcloud config set project <PROJECT_ID>
Kết quả lệnh
Updated property [core/project].
3. Tạo tập dữ liệu
Tạo một tập dữ liệu để chứa các bảng.
Tập dữ liệu là gì?
Tập dữ liệu BigQuery là một tập hợp các bảng. Tất cả bảng trong một tập dữ liệu đều được lưu trữ ở cùng một vị trí dữ liệu. Bạn cũng có thể đính kèm các chế độ kiểm soát quyền truy cập tuỳ chỉnh để giới hạn quyền truy cập vào một tập dữ liệu và các bảng trong tập dữ liệu đó.
Tạo tập dữ liệu
Trong Cloud Shell, hãy dùng lệnh bq mk để tạo một tập dữ liệu có tên là "bq_load_codelab
".
bq mk bq_load_codelab
Xem thuộc tính của tập dữ liệu
Xác minh rằng bạn đã tạo tập dữ liệu bằng cách xem các thuộc tính của tập dữ liệu bằng lệnh bq show.
bq show bq_load_codelab
Bạn sẽ thấy kết quả tương tự như dưới đây:
Dataset my-project:bq_load_codelab Last modified ACLs Labels ----------------- -------------------- -------- 15 Jun 14:12:49 Owners: projectOwners, your-email@example.com Writers: projectWriters Readers: projectReaders
4. Tạo tệp dữ liệu
BigQuery có thể tải dữ liệu từ nhiều định dạng dữ liệu, trong đó có JSON được phân tách bằng dòng mới, Avro và CSV. Để đơn giản hoá, bạn sẽ sử dụng CSV.
Tạo tệp CSV
Trong Cloud Shell, hãy tạo một tệp CSV trống.
touch customer_transactions.csv
Mở tệp CSV trong trình soạn thảo mã trong Cloud Shell bằng cách chạy lệnh chỉnh sửa Cloudshell. Thao tác này sẽ mở một cửa sổ trình duyệt mới có trình soạn thảo mã và bảng điều khiển Cloud Shell.
cloudshell edit customer_transactions.csv
Trong trình soạn thảo mã, hãy nhập một số giá trị được phân tách bằng dấu phẩy để tải vào BigQuery.
ID,Zipcode,Timestamp,Amount,Feedback,SKU c123,78757,2018-02-14 17:01:39Z,1.20,4.7,he4rt5 c456,10012,2018-03-14 15:09:26Z,53.60,3.1,ppiieee c123,78741,2018-04-01 05:59:47Z,5.98,2.0,ch0c0
Lưu tệp CSV bằng cách nhấp vào Tệp > Chỉnh sửa.
5. Tải dữ liệu
Sử dụng lệnh tải bq để tải tệp CSV của bạn vào bảng BigQuery.
bq load \ --source_format=CSV \ --skip_leading_rows=1 \ bq_load_codelab.customer_transactions \ ./customer_transactions.csv \ id:string,zip:string,ttime:timestamp,amount:numeric,fdbk:float,sku:string
Bạn đã sử dụng các lựa chọn sau:
--source_format=CSV
sử dụng định dạng dữ liệu CSV khi phân tích cú pháp tệp dữ liệu.--skip_leading_rows=1
bỏ qua dòng đầu tiên trong tệp CSV vì đây là hàng tiêu đề.Bq_load_codelab.customer_transactions—the first positional argument—
xác định bảng nào sẽ được tải vào../customer_transactions.csv
(đối số vị trí thứ hai) xác định tệp cần tải. Ngoài các tệp trên thiết bị, lệnh tải bq có thể tải các tệp từ Cloud Storage bằnggs://my_bucket/path/to/file URIs
.- Giản đồ (có thể được xác định trong tệp giản đồ JSON hoặc dưới dạng danh sách được phân tách bằng dấu phẩy. (Để đơn giản, bạn sử dụng danh sách được phân tách bằng dấu phẩy.)
Bạn đã sử dụng giản đồ sau trong bảng customer_transactions:
Id:string
: Giá trị nhận dạng khách hàngZip:string
: Mã bưu chính của Hoa KỳTtime:timestamp
: Ngày và giờ diễn ra giao dịchAmount:numeric
: Số tiền giao dịch (cột số lưu trữ dữ liệu ở dạng số thập phân, hữu ích cho các giá trị tiền tệ.)Fdbk:float
: Điểm xếp hạng trong một cuộc khảo sát phản hồi về giao dịchSku:string
: Giá trị nhận dạng của mặt hàng đã mua
Xem thông tin chi tiết về bảng
Xác minh rằng bảng đã tải bằng cách hiển thị các thuộc tính của bảng.
bq show bq_load_codelab.customer_transactions
Kết quả:
Table my-project:bq_load_codelab.customer_transactions Last modified Schema Total Rows Total Bytes ----------------- --------------------- ------------ ------------- 15 Jun 15:13:55 |- id: string 3 159 |- zip: string |- ttime: timestamp |- amount: numeric |- fdbk: float |- sku: string
6. Truy vấn dữ liệu
Giờ đây, dữ liệu đã được tải, bạn có thể truy vấn dữ liệu đó bằng cách sử dụng giao diện người dùng web BigQuery, lệnh bq hoặc API. Các truy vấn của bạn có thể kết hợp dữ liệu của bạn dựa vào bất kỳ tập dữ liệu nào (hoặc tập dữ liệu, miễn là chúng ở cùng một vị trí) mà bạn có quyền đọc.
Chạy một truy vấn SQL chuẩn kết hợp tập dữ liệu của bạn với tập dữ liệu mã ZIP của Hoa Kỳ và tổng hợp các giao dịch theo tiểu bang ở Hoa Kỳ. Sử dụng lệnh truy vấn bq để thực thi truy vấn.
bq query --nouse_legacy_sql ' SELECT SUM(c.amount) AS amount_total, z.state_code AS state_code FROM `bq_load_codelab.customer_transactions` c JOIN `bigquery-public-data.utility_us.zipcode_area` z ON c.zip = z.zipcode GROUP BY state_code '
Lệnh đó sẽ xuất ra kết quả như sau:
Waiting on bqjob_r26...05a15b38_1 ... (1s) Current status: DONE +--------------+------------+ | amount_total | state_code | +--------------+------------+ | 53.6 | NY | | 7.18 | TX | +--------------+------------+
Truy vấn mà bạn chạy đã sử dụng một tập dữ liệu công khai và tập dữ liệu riêng tư của bạn. Tìm hiểu thêm bằng cách đọc phiên bản có nhận xét này của cùng một truy vấn:
#standardSQL SELECT /* Total of all transactions in the state. */ SUM(c.amount) AS amount_total, /* State corresponding to the transaction's zipcode. */ z.state_code AS state_code /* Query the table you just constructed. * Note: If you omit the project from the table ID, * the dataset is read from your project. */ FROM `bq_load_codelab.customer_transactions` c /* Join the table to the zipcode public dataset. */ JOIN `bigquery-public-data.utility_us.zipcode_area` z /* Find the state corresponding to the transaction's zipcode. */ ON c.zip = z.zipcode /* Group over all transactions by state. */ GROUP BY state_code
7. Dọn dẹp
Xoá tập dữ liệu mà bạn đã tạo bằng lệnh bq rm. Hãy sử dụng cờ -r để xoá mọi bảng có trong đó.
bq rm -r bq_load_codelab
8. Xin chúc mừng!
Bạn đã tải một bảng lên BigQuery và đã truy vấn bảng đó!
Nội dung bạn đã đề cập
- Sử dụng công cụ dòng lệnh
bq
để tương tác với BigQuery. - Kết hợp dữ liệu của bạn và tập dữ liệu công khai với truy vấn BigQuery.
Các bước tiếp theo
Tìm hiểu thêm về:
- Công cụ dòng lệnh
bq
- Những cách khác để tải dữ liệu vào BigQuery.
- Các tập dữ liệu công khai khác có sẵn thông qua BigQuery.
- Dữ liệu thời tiết, tội phạm và các loại dữ liệu khác trong TIL với BigQuery.