批次擷取資料

雖然將資料擷取至 Manufacturing Data Engine (MDE) 的主要方式,是透過 Manufacturing Connect Edge (MCe) 串流或將訊息傳送至 Pub/Sub,但也可以批次擷取檔案。這項功能可用於重新處理資料,或從外部系統匯入資料。

如要批次載入資料,請使用網頁介面或 API 建立 IngestionSpecification,然後將一或多個檔案上傳至 MDE 設定的 Cloud Storage bucket 資料夾 (預設名稱為 <project-id>-batch-ingestion)。當新檔案上傳至這個 bucket 時,Cloud Storage Reader Dataflow 工作會偵測到,並將檔案分割成個別訊息,然後將每則訊息傳送至 input-messages Pub/Sub 主題。

支援的格式

批次載入支援下列資料格式:

  • JSON:以換行符號分隔。每行文字都會以新訊息的形式傳送。
  • CSV:可含或不含標題 (可定義),支援略過資料列和不同分隔符。系統會將訊息轉換為 JSON,並以每個標題資料欄做為鍵,對應的資料列資料欄做為值。
  • AVRO:將 AVRO 中的每一列對應至 JSON。
  • AVRO_RAW_WRITER:讀取 Cloud Storage Writer 寫入的未處理訊息,並寫回每則訊息,同時保留 Pub/Sub 訊息 ID。

設定

Cloud Storage Reader 需要 File Ingestion Specification,才能處理檔案。這個檔案會定義 Reader 應預期的檔案類型、檔案選項,以及檔案要上傳至哪個資料夾。

所有格式都需要下列參數:

  • name:File Ingestion Specification 的名稱。
  • folderName:檔案上傳至此 File Ingestion Specification 的資料夾。
  • source:要使用的格式 (JSON/CSV/AVRO/AVRO_RAW_WRITER)。

此外,CSV 來源還支援下列功能:

  • separator:要使用的分隔符 (如未提供,則使用 ,)。
  • skip_rows:是否要在開始讀取 CSV 檔案前略過任何資料列。
  • headers:
    • infer_headers:是否應由讀取的第一列推斷標題。
    • headerNames:提供要使用的標頭名稱排序清單。
  • insert_metadata:是否要加入與擷取檔案相關的中繼資料 (filePath、fileName、ingestionName)。這些資料會以額外的鍵值配對形式,新增至傳送的訊息。

設定範例

本節包含批次載入的範例設定。

擷取以換行符號分隔的 JSON 檔案

REST

POST configuration/v1/ingestions

{
  "name": "json-simple",
  "source": "JSON",
  "folderName": "jsonFiles"
}

控制台

  1. 存取「檔案擷取規格」的設定。
  2. 開啟「Cloud Management」(雲端管理) 區段的「FILE INGESTION」(檔案擷取) 部分。

    檔案擷取 - 列出檔案擷取規格

  3. 現有的「檔案擷取規格」會列在「檔案擷取」部分。如要修改、啟用、停用或刪除這些規格,請使用每個擷取規格旁的「動作」圖示。

    檔案擷取 - 擷取規格中可用的動作

  4. 如要建立新的「檔案擷取規格」,請按一下「新增擷取規格」。畫面右側會顯示新的側邊選單,其中包含定義新檔案擷取規格的所有必要參數:

    檔案擷取 - 新的檔案擷取規格

  5. 如要建立新的以換行符號分隔的 JSON 檔案擷取規格,請從「來源類型」選單選取「JSON」,並提供兩個必要參數,在本範例中:

    • name:檔案擷取規格的名稱。
    • folderName:檔案將上傳至此資料夾,以符合檔案擷取規格。

    檔案擷取 - 新的 JSON 檔案擷取規格

  6. 填寫完參數後,按一下「建立」。如果成功建立新的檔案擷取規格,系統會顯示確認訊息。

擷取 AVRO 檔案

REST

POST configuration/v1/ingestions

{
  "name": "avro-simple",
  "source": "AVRO",
  "folderName": "avroFiles"
}

控制台

  1. 存取「檔案擷取規格」的設定。
  2. 開啟「Cloud Management」(雲端管理) 區段的「FILE INGESTION」(檔案擷取) 部分。

    檔案擷取 - 列出檔案擷取規格

  3. 現有的「檔案擷取規格」會列在「檔案擷取」部分。如要修改、啟用、停用或刪除這些規格,請使用每個擷取規格旁的「動作」圖示。

    檔案擷取 - 擷取規格中可用的動作

  4. 如要建立新的「檔案擷取規格」,請按一下「新增擷取規格」。

  5. 畫面右側會顯示新的側邊選單,內含定義新檔案擷取規格的所有必要參數:

    檔案擷取 - 新的檔案擷取規格

  6. 如要建立新的 AVRO 檔案擷取規格,請從「來源類型」選單中選取「AVRO」。

  7. 提供兩個必要參數,在本例中為:

    • name:檔案擷取規格的名稱。
    • folderName:檔案將上傳至此資料夾,以符合檔案擷取規格。

    檔案擷取 - 新的 AVRO 檔案擷取規格

  8. 填寫完參數後,按一下「建立」。如果成功建立新的檔案擷取規格,系統會顯示確認訊息。

從標頭推斷資料欄名稱,然後匯入 CSV 檔案

REST

POST configuration/v1/ingestions

{
  "name": "csv-simple",
  "source": "CSV",
  "folderName": "csv-simple",
  "separator": ",",
  "headers": {
    "inferHeaders": true
  }
}

控制台

  1. 前往 Manufacturing Connect 網頁介面。
  2. 存取「檔案擷取規格」的設定。
  3. 開啟「Cloud Management」(雲端管理) 區段的「FILE INGESTION」(檔案擷取) 部分。

    檔案擷取 - 列出檔案擷取規格

  4. 現有的「檔案擷取規格」會列在「檔案擷取」部分。如要修改、啟用、停用或刪除這些規格,請使用每個擷取規格旁的「動作」圖示。

    檔案擷取 - 擷取規格中可用的動作

  5. 如要建立新的「檔案擷取規格」,請按一下「新增擷取規格」。

  6. 畫面右側會顯示新的側邊選單,內含定義新檔案擷取規格的所有必要參數:

    檔案擷取 - 新的檔案擷取規格

  7. 如要建立新的「檔案擷取規格」,請按一下「新增擷取規格」。

  8. 畫面右側會顯示新的側邊選單,內含所有需要定義的參數。

    檔案擷取規格:

    檔案擷取 - 新的檔案擷取規格

  9. 如要建立新的 CSV 檔案,並從標題推斷欄名,請從「來源類型」選單選取「CSV」,然後提供七個必要參數,在本範例中:

    • name:檔案擷取規格的名稱。
    • folderName:檔案將上傳至此資料夾,以符合檔案擷取規格。
    • separator:要使用的分隔符 (如果未提供,則使用 ,)。
    • skip_rows:是否要在開始讀取 CSV 檔案前略過任何資料列。
    • headers:
    • infer_headers:是否應根據讀取的第一列推斷標頭。選取「是」,從標題推斷資料欄名稱。
    • insert_metadata:是否要加入與擷取檔案相關的中繼資料 (filePath、fileName、ingestionName)。

    檔案擷取 - 新的 CSV 檔案擷取規格

  10. 完成參數後,按一下「建立」。

  11. 如果成功建立新的檔案擷取規格,系統會顯示確認訊息。

提供資料欄名稱並新增擷取中繼資料,即可擷取 CSV 檔案

REST

POST configuration/v1/ingestions

{
  "name": "csv-headers-metadata",
  "source": "CSV",
  "folderName": "csv-headers",
  "separator": ",",
  "insertMetadata": true,
  "headers": {
    "headerNames": {
      "names": ["one", "two", "three"]
    }
  }
}

控制台

  1. 存取「檔案擷取規格」的設定。
  2. 開啟「Cloud Management」(雲端管理) 區段的「FILE INGESTION」(檔案擷取) 部分。

    檔案擷取 - 列出檔案擷取規格

  3. 現有的「檔案擷取規格」會列在「檔案擷取」部分。如要修改、啟用、停用或刪除這些規格,請使用每個擷取規格旁的「動作」圖示。

    檔案擷取 - 擷取規格中可用的動作

  4. 如要建立新的「檔案擷取規格」,請按一下「新增擷取規格」。

  5. 畫面右側會顯示新的側邊選單,內含定義新檔案擷取規格的所有必要參數:

    檔案擷取 - 新的檔案擷取規格

  6. 如要建立新的 CSV 檔案,提供資料欄名稱並新增擷取中繼資料擷取規格,請從「來源類型」選取「CSV」。

  7. 提供八個必要參數,在本例中為:

    • name:檔案擷取規格的名稱。
    • folderName:檔案將上傳至此資料夾,以符合檔案擷取規格。
    • separator:要使用的分隔符 (如果未提供,則使用 ,)。
    • skip_rows:是否要在開始讀取 CSV 檔案前略過任何資料列。
    • headers:
      • infer_headers:是否應根據讀取的第一列推斷標頭。選取「否」,不要從標題推斷資料欄名稱。
      • headerNames:提供要使用的標頭名稱排序清單。
    • insert_metadata:是否要加入與擷取檔案相關的中繼資料 (filePath、fileName、ingestionName)。

    檔案擷取 - 新的進階 CSV 檔案擷取規格

  8. 完成參數後,按一下「建立」按鈕。如果成功建立新的檔案擷取規格,系統會顯示確認訊息。

擷取 CSV 檔案,推斷標題名稱,並略過 5 列,然後開始讀取檔案

REST

POST configuration/v1/ingestions

{
  "name": "csv-skip-rows",
  "source": "CSV",
  "folderName": "csv-skip",
  "skipRows": 5,
  "separator": ",",
  "headers": {
    "inferHeaders": true
  }
}

控制台

  1. 存取「檔案擷取規格」的設定。
  2. 開啟「Cloud Management」(雲端管理) 區段的「FILE INGESTION」(檔案擷取) 部分。

    檔案擷取 - 列出檔案擷取規格

  3. 現有的「檔案擷取規格」會列在「檔案擷取」部分。如要修改、啟用、停用或刪除這些規格,請使用每個擷取規格旁的「動作」圖示。

    檔案擷取 - 擷取規格中可用的動作

  4. 如要建立新的「檔案擷取規格」,請按一下「新增擷取規格」。

  5. 畫面右側會顯示新的側邊選單,內含定義新檔案擷取規格的所有必要參數:

    檔案擷取 - 新的檔案擷取規格

  6. 如要建立新的 CSV 檔案,並推斷標題名稱和略過 5 列的擷取規格,請從「來源類型」選單中選取「CSV」。

  7. 提供七個必要參數,在本例中為:

    • name:檔案擷取規格的名稱。
    • folderName:檔案將上傳至此資料夾,以符合檔案擷取規格。
    • separator:要使用的分隔符 (如果未提供,則使用 ,)。
    • skip_rows:選取要略過的列數,在本例中為 5。
    • headers:
      • infer_headers:是否應根據讀取的第一列推斷標頭。選取「是」,從標題推斷資料欄名稱。
    • insert_metadata:是否要加入與擷取檔案相關的中繼資料 (filePath、fileName、ingestionName)。

    檔案擷取 - 新的略過資料列 CSV 檔案擷取規格

  8. 完成參數後,按一下「建立」。

  9. 如果成功建立新的檔案擷取規格,系統會顯示確認訊息。

擷取 Cloud Storage Writer 原始路徑產生的 AVRO 檔案

REST

POST configuration/v1/ingestions

{
  "name": "avro-reprocess",
  "source": "AVRO_RAW_WRITER",
  "folderName": "avro-raw"
}

如果您需要重新處理檔案,這項功能就特別實用。您可以使用原始檔案資料夾中的日期分區,只複製所需時間範圍內的檔案。例如:

gcloud storage cp "gs://<project-id>-raw/v1/dt=2023-06-19/*" \
gs://<project-id>-batch-ingestion/avro-raw/

控制台

  1. 存取「檔案擷取規格」的設定。
  2. 開啟「Cloud Management」(雲端管理) 區段的「FILE INGESTION」(檔案擷取) 部分。

    檔案擷取 - 列出檔案擷取規格

  3. 現有的「檔案擷取規格」會列在「檔案擷取」部分。如要修改、啟用、停用或刪除這些規格,請使用每個擷取規格旁的「動作」圖示。

    檔案擷取 - 擷取規格中可用的動作

  4. 如要建立新的「檔案擷取規格」,請按一下「新增擷取規格」。

  5. 畫面右側會顯示新的側邊選單,內含定義新檔案擷取規格的所有必要參數:

    檔案擷取 - 新的檔案擷取規格

  6. 如要建立由 Cloud Storage Writer 原始路徑產生的新 AVRO 檔案,請從「Source Type」(來源類型) 選單選取「AVRO Raw」(AVRO 原始),然後提供兩個必要參數,在本範例中:

    • name:檔案擷取規格的名稱。
    • folderName:檔案將上傳至此資料夾,以符合檔案擷取規格。

    檔案擷取 - 新的 AVRO 原始檔案擷取規格

  7. 完成參數後,按一下「建立」。

  8. 如果成功建立新的檔案擷取規格,系統會顯示確認訊息。

如果您需要重新處理檔案,這項功能就特別實用。您可以使用原始檔案資料夾中的日期分割區,只複製所需時間範圍內的檔案,例如:

  gcloud storage cp "gs://<project-id>-raw/v1/dt=2023-06-19/*" \
  gs://<project-id>-batch-ingestion/avro-raw/