Cloud Storage CSV 檔案到 BigQuery 範本

「Cloud Storage CSV 檔案到 BigQuery」管道是一種批次管道,可讓您從儲存在 Cloud Storage 的 CSV 檔案讀取資料,並將結果附加至 BigQuery 資料表。CSV 檔案可以未壓縮,也可以壓縮成「Compression列舉 SDK」頁面中列出的格式。

管道相關規定

如要使用這項範本,您的管道必須符合下列需求。

BigQuery 結構定義 JSON 檔案

建立一個用來描述您 BigQuery 結構定義的 JSON 檔案。 確認結構定義包含標題為 BigQuery Schema 的頂層 JSON 陣列,且其中的內容遵循 {"name": "COLUMN_NAME", "type": "DATA_TYPE"} 這個格式。

Cloud Storage CSV 檔案至 BigQuery 批次範本不支援將資料匯入目標 BigQuery 資料表中的 STRUCT (記錄) 欄位。

下列 JSON 描述 BigQuery 結構定義範例:

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

錯誤資料表結構定義

儲存 CSV 檔案中遭拒記錄的 BigQuery 資料表,必須符合這裡定義的資料表結構定義。

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

範本參數

必要參數

  • inputFilePattern:包含待處理文字的 CSV 檔案 Cloud Storage 路徑。例如:gs://your-bucket/path/*.csv
  • schemaJSONPath:JSON 檔案 (用來描述您 BigQuery 結構定義) 的 Cloud Storage 路徑。
  • outputTable:儲存已處理資料的 BigQuery 資料表名稱。假如您重複使用現有的 BigQuery 資料表,資料會附加到目的地資料表。
  • bigQueryLoadingTemporaryDirectory:在 BigQuery 載入程序期間使用的暫存目錄。例如:gs://your-bucket/your-files/temp_dir
  • badRecordsOutputTable:處理 CSV 檔案時,用來儲存遭拒資料的 BigQuery 資料表名稱。假如您重複使用現有的 BigQuery 資料表,資料會附加到目的地資料表。這個資料表的結構定義必須與錯誤資料表結構定義 (https://cloud.google.com/dataflow/docs/guides/templates/provided/cloud-storage-csv-to-bigquery#GcsCSVToBigQueryBadRecordsSchema) 相符。
  • 分隔符號:CSV 檔案使用的資料欄分隔符號。例如:,
  • csvFormat:根據 Apache Commons CSV 格式的 CSV 格式。預設值為 Default

選用參數

  • containsHeaders:CSV 檔案中是否包含標頭。預設值為 false
  • csvFileEncoding:CSV 檔案的字元編碼格式。允許的值為 US-ASCIIISO-8859-1UTF-8UTF-16。預設值為 UTF-8。

執行範本

控制台

  1. 前往 Dataflow 的「Create job from template」(透過範本建立工作) 頁面。
  2. 前往「依據範本建立工作」
  3. 在「工作名稱」欄位中,輸入專屬工作名稱。
  4. 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為 us-central1

    如需可執行 Dataflow 工作的地區清單,請參閱「Dataflow 位置」。

  5. 從「Dataflow template」(Dataflow 範本) 下拉式選單中選取 the CSV files on Cloud Storage to BigQuery (Batch) template。
  6. 在提供的參數欄位中輸入參數值。
  7. 按一下「Run Job」(執行工作)

gcloud

在殼層或終端機中執行範本:

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

更改下列內容:

  • PROJECT_ID: 您要執行 Dataflow 工作的專案 ID Google Cloud
  • JOB_NAME: 您選擇的不重複工作名稱
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • REGION_NAME: 您要部署 Dataflow 工作的地區,例如 us-central1
  • PATH_TO_CSV_DATA:CSV 檔案的 Cloud Storage 路徑
  • PATH_TO_BIGQUERY_SCHEMA_JSON:指向 JSON 檔案 (內含結構定義) 的 Cloud Storage 路徑
  • BIGQUERY_DESTINATION_TABLE:BigQuery 目的地資料表名稱
  • BIGQUERY_BAD_RECORDS_TABLE:BigQuery 錯誤記錄資料表名稱
  • PATH_TO_TEMP_DIR_ON_GCS:暫時目錄的 Cloud Storage 路徑
  • DELIMITER:CSV 檔案分隔符號
  • CSV_FORMAT:用於剖析記錄的 CSV 格式規格
  • CONTAINS_HEADERS:CSV 檔案是否包含標頭
  • CSV_FILE_ENCODING:CSV 檔案中的編碼

API

如要使用 REST API 執行範本,請傳送 HTTP POST 要求。如要進一步瞭解 API 和授權範圍,請參閱 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" }
}

更改下列內容:

  • PROJECT_ID: 您要執行 Dataflow 工作的專案 ID Google Cloud
  • JOB_NAME: 您選擇的不重複工作名稱
  • VERSION: 您要使用的範本版本

    您可以使用下列值:

  • LOCATION: 您要部署 Dataflow 工作的地區,例如 us-central1
  • PATH_TO_CSV_DATA:CSV 檔案的 Cloud Storage 路徑
  • PATH_TO_BIGQUERY_SCHEMA_JSON:指向 JSON 檔案 (內含結構定義) 的 Cloud Storage 路徑
  • BIGQUERY_DESTINATION_TABLE:BigQuery 目的地資料表名稱
  • BIGQUERY_BAD_RECORDS_TABLE:BigQuery 錯誤記錄資料表名稱
  • PATH_TO_TEMP_DIR_ON_GCS:暫時目錄的 Cloud Storage 路徑
  • DELIMITER:CSV 檔案分隔符號
  • CSV_FORMAT:用於剖析記錄的 CSV 格式規格
  • CONTAINS_HEADERS:CSV 檔案是否包含標頭
  • CSV_FILE_ENCODING:CSV 檔案中的編碼

後續步驟