Cloud Storage CSV 檔案到 BigQuery 範本

「Cloud Storage CSV 檔案至 BigQuery」管道是一種批次管道,可讓您從儲存在 Cloud Storage 的 CSV 檔案讀取資料,並將結果附加至 BigQuery 資料表。CSV 檔案可以未壓縮,也可以壓縮成 Compression Enum 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:定義 BigQuery 結構定義的 JSON 檔案的 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) 相符。
  • delimiter: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. 在「Job name」(工作名稱) 欄位中,輸入專屬工作名稱。
  4. 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為 us-central1

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

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

gcloud

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

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/ \
    --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 工作的 Google Cloud 專案 ID
  • 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/
{
   "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 工作的 Google Cloud 專案 ID
  • 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 檔案中的編碼

後續步驟