File CSV Cloud Storage ke template BigQuery

File CSV Cloud Storage ke pipeline BigQuery adalah pipeline batch yang memungkinkan Anda membaca data dari file CSV yang disimpan di Cloud Storage dan menambahkan hasilnya ke tabel BigQuery. File CSV dapat tidak dikompresi atau dikompresi dalam format yang tercantum di halaman Compression Enum SDK.

Persyaratan pipeline

Untuk menggunakan template ini, pipeline Anda harus memenuhi persyaratan berikut.

File JSON skema BigQuery

Buat file JSON yang mendeskripsikan skema BigQuery Anda. Pastikan skema memiliki array JSON level atas yang berjudul BigQuery Schema dan kontennya mengikuti pola {"name": "COLUMN_NAME", "type": "DATA_TYPE"}.

File CSV Cloud Storage ke template batch BigQuery tidak mendukung impor data ke kolom STRUCT (Record) di tabel BigQuery target.

JSON berikut menjelaskan contoh skema BigQuery:

{
  "BigQuery Schema": [
    {
      "name": "location",
      "type": "STRING"
    },
    {
      "name": "name",
      "type": "STRING"
    },
    {
      "name": "age",
      "type": "STRING"
    },
    {
      "name": "color",
      "type": "STRING"
    },
    {
      "name": "coffee",
      "type": "STRING"
    }
  ]
}

Skema tabel error

Tabel BigQuery yang menyimpan data yang ditolak dari file CSV harus cocok dengan skema tabel yang ditentukan di sini.

{
  "BigQuery Schema": [
    {
      "name": "RawContent",
      "type": "STRING"
    },
    {
      "name": "ErrorMsg",
      "type": "STRING"
    }
  ]
}

Parameter template

Parameter Deskripsi
inputFilePattern Jalur Cloud Storage ke file CSV yang berisi teks yang akan diproses. Misalnya, gs://path/to/my/text/data.csv.
schemaJSONPath Jalur Cloud Storage ke file JSON yang menentukan skema BigQuery Anda. Misalnya, gs://path/to/my/schema.json.
outputTable Nama tabel BigQuery yang menyimpan data yang diproses. Jika Anda menggunakan kembali tabel BigQuery yang sudah ada, data akan ditambahkan ke tabel tujuan. Misalnya, my-project-name:my-dataset.my-table.
bigQueryLoadingTemporaryDirectory Direktori sementara yang akan digunakan selama proses pemuatan BigQuery. Misalnya, gs://my-bucket/my-files/temp_dir.
badRecordsOutputTable Nama tabel BigQuery yang akan digunakan untuk menyimpan data yang ditolak saat memproses file CSV. Jika Anda menggunakan kembali tabel BigQuery yang sudah ada, data akan ditambahkan ke tabel tujuan. Misalnya, my-project-name:my-dataset.my-bad-records-table. Skema tabel ini harus cocok dengan skema tabel error.
delimiter Pemisah kolom file CSV input. Misalnya, ",".
csvFormat Spesifikasi format CSV yang akan digunakan untuk mengurai data. Misalnya, Default. Nilai ini harus sama persis dengan nama format dalam Enum CSVFormat.Predefined.
containsHeaders Apakah file CSV input berisi record header. Nilai defaultnya adalah false.
csvFileEncoding Format encoding karakter file CSV. Nilai yang diizinkan adalah US-ASCII, ISO-8859-1, UTF-8, dan UTF-16. Setelan defaultnya adalah UTF-8.

Menjalankan template

Konsol

  1. Buka halaman Create job from template Dataflow.
  2. Buka Buat tugas dari template
  3. Di kolom Job name, masukkan nama pekerjaan yang unik.
  4. Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region default-nya adalah us-central1.

    Untuk daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.

  5. Dari menu drop-down Dataflow template, pilih the CSV files on Cloud Storage to BigQuery (Batch) template.
  6. Di kolom parameter yang disediakan, masukkan parameter value Anda.
  7. Klik Run job.

gcloud

Di shell atau terminal Anda, jalankan template:

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/GCS_CSV_to_BigQuery \
    --region REGION_NAME \
    --parameters \
inputFilePattern=PATH_TO_CSV_DATA,\
schemaJSONPath=PATH_TO_BIGQUERY_SCHEMA_JSON,\
outputTable=BIGQUERY_DESTINATION_TABLE,\
badRecordsOutputTable=BIGQUERY_BAD_RECORDS_TABLE,\
csvFormat=CSV_FORMAT,\
delimiter=DELIMITER,\
bigQueryLoadingTemporaryDirectory=PATH_TO_TEMP_DIR_ON_GCS,\
containsHeaders=CONTAINS_HEADERS,\
csvFileEncoding=CSV_FILE_ENCODING

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud tempat Anda ingin menjalankan tugas Dataflow
  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • REGION_NAME: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • PATH_TO_CSV_DATA: jalur Cloud Storage ke file CSV Anda
  • PATH_TO_BIGQUERY_SCHEMA_JSON: jalur Cloud Storage ke file JSON yang berisi definisi skema
  • BIGQUERY_DESTINATION_TABLE: nama tabel tujuan BigQuery
  • BIGQUERY_BAD_RECORDS_TABLE: Nama tabel data buruk BigQuery
  • PATH_TO_TEMP_DIR_ON_GCS: jalur Cloud Storage ke direktori sementara
  • DELIMITER: Pemisah file CSV
  • CSV_FORMAT: Spesifikasi format CSV untuk mengurai data
  • CONTAINS_HEADERS: apakah file CSV berisi header atau tidak
  • CSV_FILE_ENCODING: mengenkode file CSV

API

Untuk menjalankan template menggunakan REST API, kirim permintaan HTTP POST. Untuk informasi selengkapnya tentang API dan cakupan otorisasinya, lihat projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/GCS_CSV_to_BigQuery
{
   "jobName": "JOB_NAME",
   "parameters": {
       "inputFilePattern":"PATH_TO_CSV_DATA",
       "schemaJSONPath": "PATH_TO_BIGQUERY_SCHEMA_JSON",
       "outputTable":"BIGQUERY_DESTINATION_TABLE",
       "badRecordsOutputTable":"BIGQUERY_BAD_RECORDS_TABLE",
       "csvFormat":"CSV_FORMAT",
       "delimiter":"DELIMITER",
       "bigQueryLoadingTemporaryDirectory": "PATH_TO_TEMP_DIR_ON_GCS",
       "containsHeaders": "CONTAINS_HEADERS",
       "csvFileEncoding": "CSV_FILE_ENCODING"
   },
   "environment": { "zone": "us-central1-f" }
}

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud tempat Anda ingin menjalankan tugas Dataflow
  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • VERSION: versi template yang ingin Anda gunakan

    Anda dapat menggunakan nilai berikut:

  • LOCATION: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • PATH_TO_CSV_DATA: jalur Cloud Storage ke file CSV Anda
  • PATH_TO_BIGQUERY_SCHEMA_JSON: jalur Cloud Storage ke file JSON yang berisi definisi skema
  • BIGQUERY_DESTINATION_TABLE: nama tabel tujuan BigQuery
  • BIGQUERY_BAD_RECORDS_TABLE: Nama tabel data buruk BigQuery
  • PATH_TO_TEMP_DIR_ON_GCS: jalur Cloud Storage ke direktori sementara
  • DELIMITER: Pemisah file CSV
  • CSV_FORMAT: Spesifikasi format CSV untuk mengurai data
  • CONTAINS_HEADERS: apakah file CSV berisi header atau tidak
  • CSV_FILE_ENCODING: mengenkode file CSV

Langkah selanjutnya