Google BigQuery và thực hành cơ bản

Google BigQuery (GBQ) cho phép bạn thu thập dữ liệu từ các nguồn khác nhau và phân tích dữ liệu đó bằng cách sử dụng các truy vấn SQL. Bigquery có khả năng mở rộng và dễ sử dụng, cho phép các nhà phát triển và doanh nghiệp khai thác các phân tích dữ liệu mạnh mẽ theo yêu cầu. Nếu bạn từng biết hay tìm hiểu về BigQuery, chắc hẳn là bạn cũng đã biết về những ưu điểm vượt trội của BigQuery so với các data warehouse khác như:

  • Serverless: Hoàn toàn trên cloud và đã được cấu hình sẵn, tự động scale – đáp ứng data tăng/giảm. Mọi thứ luôn sẵn sàng để bạn sử dụng.
  • Lưu trữ và truy vấn gần như không giới hạn, đến hàng petabyte.

Các loại dữ liệu được hỗ trợ trong Google BigQuery:

  • Dữ liệu từ cloud storage hoặc file local. Các định dạng bản ghi được support như: Avro, CSV or JSON.
  • Dữ liệu exports từ Firestore và Datastore.
  • Dữ liệu từ các Dịch vụ khác của Google như Google Ads Manager và Google Analytics
  • Streaming
  • Các câu lệnh DML (Data Manipulation Language)

Load Data into BigQuery

  1. Tạo dataset

Trước khi tải lên bất kỳ dữ liệu nào, chúng ta cần tạo dataset và table trong Google BigQuery. Để thực hiện việc này, trên trang chủ BigQuery, hãy chọn resource mà bạn muốn tạo dataset. Tiếp theo chúng ta sẽ tạo một dataset bằng cách click CREATE DATASET (dataset trong GBQ giống như database trong MySQL).

Đặt tên Dataset ID tuỳ theo ý thích của mình, (ví dụ: Q4T), Data location chọn là default sau đó  Create dataset để tạo.

Ta đã tạo xong một dataset có tên là Q4T, tiếp theo ta sẽ tạo các table cho dataset đó là hoàn thiện việc tạo dữ liệu cho dataset.

Để chuẩn bị dữ liệu để đưa lên GBQ thì chúng ta có thể lấy từ rất nhiều nguồn khác nhau như đã nói ở trên, ví dụ 1 file csv như bên dưới: 

Điền các thông tin table, field và tùy chọn advanced option với Header rows to skip là 1

Sau khi tạo table ta có dataset như hình dưới: 

Nào, vậy chúng ta cùng xem truy vấn ở Google BigQuery như thế nào nhé!

    • Với GBQ khi bạn gõ xong câu truy vấn thì hệ thống thông báo khối lượng cần xử lý, ví dụ hình dưới là 3.5KB , bởi GBQ sẽ tính phí trên khối lượng cần xử lý đấy. Bạn sẽ được miễn phí 1TB mỗi tháng, ngoài ra bạn phải trả phí là $5.00/1TB  (vì là dịch vụ serverless nên chúng ta chỉ phải trả phí sau khi thực hiện câu truy vấn)
    • Bạn có thể format lại câu truy vấn theo “chuẩn” bằng cách click More -> Format query

Tương tự, bạn có thể thực hiện với file json, avro.

Ngoài ra chúng ta có thể sử dụng bq command-line, client libraries để tải dữ liệu lên từ dữ liệu nguồn local

  • Sử dụng bq command-line

Chúng ta sử dụng bq load command theo cú pháp:

bq --location=LOCATION load --source_format=FORMAT PROJECT_ID:DATASET.TABLE PATH_TO_SOURCE SCHEMA

Trong đó:

    • LOCATION: nơi bạn muốn đặt vị trí, ví dụ sử dụng GBQ ở khu vực Tokyo thì LOCATION là asia-northeast1
    • FORMAT: CSV, AVRO, PARQUET, ORC, hoặc NEWLINE_DELIMITED_JSON.
    • project_id: id project
    • dataset: tên dataset đã tồn tại
    • table: tên bảng muốn đưa dữ liệu vào
    • path_to_source: đường dẫn đến local file
    • schema: 1 schema hợp lệ

Tham khảo thêm tại đây

  • Sử dụng client libraries (Ví dụ ở đây sử dụng nodejs)

Đầu tiên, ta cần cung cấp authentication credentials thông qua biến môi trường GOOGLE_APPLICATION_CREDENTIALS

export GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH

với KEY_PATH là đường dẫn của tệp JSON có chứa khóa tài khoản dịch vụ của bạn.

async function loadLocalFile(datasetId, tableId , filename) {
  // Load data from a local file into the table
  const [job] = await bigquery
          .dataset(datasetId)
          .table(tableId)
          .load(filename);
  console.log(`Job ${job.id} completed.`);

  // Check the job's status for errors
  const errors = job.status.errors;
  if (errors && errors.length > 0) {
    console.log(errors);
    throw  errors;
  }
}

Ở đây, mình load data vào table2, đây là kết quả sau khi sử dụng client libraries

Trên đây là phần thực hành cơ bản để upload data lên GBQ, với GBQ còn rất nhiều thứ hay ho nữa, mọi người cùng theo dõi blog tiếp theo của team về GBQ nhé!

Add a Comment

Scroll Up