Blog

Cách xuất dữ liệu ra File trong Google BigQuery

Việc xuất dữ liệu sang File từ BigQuery yêu cầu sử dụng Google Cloud Storage để lưu trữ tệp đã xuất. Sau khi tệp được lưu trữ trong Google Cloud Storage, bạn có thể tải xuống hoặc xuất tệp ở nơi khác nếu cần.

Khi bạn đã tạo Cloud Storage, bạn cũng sẽ cần tạo một bucket

Cloud Storage URI Format

Với Cloud Storage URI, cần thông báo cho BigQuery nơi bạn xuất tập tin, theo định dạng đơn giản như sau: gs://<bucket-name>/<file-name>.

Nếu bạn muốn đặt file trong các thư mục, chỉ cần thêm đường URI: gs://<bucket-name>/<parent-directory>/<child-directory>/<file-name>.

Xuất qua WebUI

Để xuất bảng BigQuery sang File qua WebUI ta làm như sau:

  • Truy cập WebUI BigQuery .
  • Chọn tệp table bạn muốn xuất.
  • Nhấp vào Export Table ở trên cùng bên phải.
  • Chọn Export formatvà Compression, nếu cần.
  • Thay đổi Google Cloud Storage URI nếu cần thiết để khớp với các thư mục trong bucket, và nhập file-name bạn muốn xuất sang.
  • Nhấp OK và đợi công việc hoàn thành.

Xuất qua API

Để xuất File trong BigQuery bằng API BigQuery, bạn cần thực hiện lệnh gọi Jobs.insert. Cấu trúc cấu hình cơ bản được đưa ra dưới đây:

{
  'jobReference': {
    'projectId': projectId,
    'jobId': uniqueIdentifier
  },
  'configuration': {
    'extract': {
      'sourceTable': {
        'projectId': projectId,
        'datasetId': datasetId,
        'tableId': tableId
      },
      'destinationUris': [cloudStorageURI],
      'destinationFormat': 'CSV',
      'compression': 'NONE'
    }
  }
}
  • uniqueIdentifier chỉ đơn giản là một chuỗi duy nhất xác định công việc cụ thể này, vì vậy sẽ không có bất kỳ sự trùng lặp dữ liệu nào nếu công việc không thành công trong quá trình xử lý.
  • projectId là ID dự án BigQuery.
  • datasetId là ID tập dữ liệu BigQuery.
  • tableId tất nhiên là ID bảng BigQuery.
  • destinationFormat mặc định CSV nhưng cũng có thể là NEWLINE_DELIMITED_JSON và AVRO.
  • compression mặc định NONE nhưng cũng có thể GZIP.

Ví dụ: nếu chúng ta muốn xuất sang melville trong tập dữ liệu exports của mình, dự án: bookstore-1382, Ta có thể sử dụng cấu hình như sau:

{
  'jobReference': {
    'projectId': 'bookstore-1382',
    'jobId': 'bcd56153-b882-4f78-8a30-f509b583a568'
  },
  'configuration': {
    'extract': {
      'sourceTable': {
        'projectId': 'bookstore-1382',
        'datasetId': 'exports',
        'tableId': 'melville'
      },
      'destinationUris': ['gs://bookstore/melville.json'],
      'destinationFormat': 'NEWLINE_DELIMITED_JSON',
      'compression': 'NONE'
    }
  }
}

Đợi quá trình xử lý, Làm mới bookstore bucket  trong Cloud Storage sẽ hiển thị tệp  melville.json :

{"BookMeta_Title":"Typee, a Romance of the South Seas","BookMeta_Date":"1920","BookMeta_Creator":"Herman Melville","BookMeta_Language":"English","BookMeta_Publisher":"Harcourt, Brace and Howe"}
{"BookMeta_Title":"Typee: A Real Romance of the South Seas","BookMeta_Date":"1904","BookMeta_Creator":"Herman Melville ,  William Clark Russell ,  Marie Clothilde Balfour","BookMeta_Language":"English","BookMeta_Publisher":"John Lane, the BodleyHead"}
{"BookMeta_Title":"Typee: A Narrative of a Four Months' Residence Among the Natives of a Valley of the Marquesas ...","BookMeta_Date":"1893","BookMeta_Creator":"Herman Melville","BookMeta_Language":"English","BookMeta_Publisher":"J. Murray"}
...

Sử dụng Wildcard URI cho Multiple File Output

Trong một số trường hợp, bạn có thể xuất một bảng vượt quá kích thước tối đa của mỗi tệp là 1GB. Trong những trường hợp như vậy, bạn nên sử dụng ký tự đại diện URI bằng cách thêm dấu hoa thị * trong file-name

Ví dụ: một Cloud Storage URI: gs://bookstore/melville-*.json trong cấu hình sẽ trở thành một chuỗi lặp đi lặp lại, các tên tệp tăng dần, như sau:

gs://bookstore/melville-000000000000.json
gs://bookstore/melville-000000000001.json
gs://bookstore/melville-000000000002.json
...

Đọc thêm: Khóa học Google BigQuery for Data Analytics & Machine Learning

    Xin vui lòng điền vào form dưới đây. Chúng tôi sẽ liên hệ lại ngay cho bạn khi nhận được thông tin:


    Leave a Reply

    Your email address will not be published. Required fields are marked *