批次擷取資料
雖然將資料擷取至 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"
}
控制台
- 存取「檔案擷取規格」的設定。
開啟「Cloud Management」(雲端管理) 區段的「FILE INGESTION」(檔案擷取) 部分。

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

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

如要建立新的以換行符號分隔的 JSON 檔案擷取規格,請從「來源類型」選單選取「JSON」,並提供兩個必要參數,在本範例中:
- name:檔案擷取規格的名稱。
- folderName:檔案將上傳至此資料夾,以符合檔案擷取規格。

填寫完參數後,按一下「建立」。如果成功建立新的檔案擷取規格,系統會顯示確認訊息。
擷取 AVRO 檔案
REST
POST configuration/v1/ingestions
{
"name": "avro-simple",
"source": "AVRO",
"folderName": "avroFiles"
}
控制台
- 存取「檔案擷取規格」的設定。
開啟「Cloud Management」(雲端管理) 區段的「FILE INGESTION」(檔案擷取) 部分。

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

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

如要建立新的 AVRO 檔案擷取規格,請從「來源類型」選單中選取「AVRO」。
提供兩個必要參數,在本例中為:
- name:檔案擷取規格的名稱。
- folderName:檔案將上傳至此資料夾,以符合檔案擷取規格。

填寫完參數後,按一下「建立」。如果成功建立新的檔案擷取規格,系統會顯示確認訊息。
從標頭推斷資料欄名稱,然後匯入 CSV 檔案
REST
POST configuration/v1/ingestions
{
"name": "csv-simple",
"source": "CSV",
"folderName": "csv-simple",
"separator": ",",
"headers": {
"inferHeaders": true
}
}
控制台
- 前往 Manufacturing Connect 網頁介面。
- 存取「檔案擷取規格」的設定。
開啟「Cloud Management」(雲端管理) 區段的「FILE INGESTION」(檔案擷取) 部分。

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

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

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

如要建立新的 CSV 檔案,並從標題推斷欄名,請從「來源類型」選單選取「CSV」,然後提供七個必要參數,在本範例中:
- name:檔案擷取規格的名稱。
- folderName:檔案將上傳至此資料夾,以符合檔案擷取規格。
- separator:要使用的分隔符 (如果未提供,則使用
,)。 - skip_rows:是否要在開始讀取 CSV 檔案前略過任何資料列。
- headers:
- infer_headers:是否應根據讀取的第一列推斷標頭。選取「是」,從標題推斷資料欄名稱。
- insert_metadata:是否要加入與擷取檔案相關的中繼資料 (filePath、fileName、ingestionName)。

完成參數後,按一下「建立」。
如果成功建立新的檔案擷取規格,系統會顯示確認訊息。
提供資料欄名稱並新增擷取中繼資料,即可擷取 CSV 檔案
REST
POST configuration/v1/ingestions
{
"name": "csv-headers-metadata",
"source": "CSV",
"folderName": "csv-headers",
"separator": ",",
"insertMetadata": true,
"headers": {
"headerNames": {
"names": ["one", "two", "three"]
}
}
}
控制台
- 存取「檔案擷取規格」的設定。
開啟「Cloud Management」(雲端管理) 區段的「FILE INGESTION」(檔案擷取) 部分。

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

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

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

完成參數後,按一下「建立」按鈕。如果成功建立新的檔案擷取規格,系統會顯示確認訊息。
擷取 CSV 檔案,推斷標題名稱,並略過 5 列,然後開始讀取檔案
REST
POST configuration/v1/ingestions
{
"name": "csv-skip-rows",
"source": "CSV",
"folderName": "csv-skip",
"skipRows": 5,
"separator": ",",
"headers": {
"inferHeaders": true
}
}
控制台
- 存取「檔案擷取規格」的設定。
開啟「Cloud Management」(雲端管理) 區段的「FILE INGESTION」(檔案擷取) 部分。

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

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

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

完成參數後,按一下「建立」。
如果成功建立新的檔案擷取規格,系統會顯示確認訊息。
擷取 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/
控制台
- 存取「檔案擷取規格」的設定。
開啟「Cloud Management」(雲端管理) 區段的「FILE INGESTION」(檔案擷取) 部分。

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

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

如要建立由 Cloud Storage Writer 原始路徑產生的新 AVRO 檔案,請從「Source Type」(來源類型) 選單選取「AVRO Raw」(AVRO 原始),然後提供兩個必要參數,在本範例中:
- name:檔案擷取規格的名稱。
- folderName:檔案將上傳至此資料夾,以符合檔案擷取規格。

完成參數後,按一下「建立」。
如果成功建立新的檔案擷取規格,系統會顯示確認訊息。
如果您需要重新處理檔案,這項功能就特別實用。您可以使用原始檔案資料夾中的日期分割區,只複製所需時間範圍內的檔案,例如:
gcloud storage cp "gs://<project-id>-raw/v1/dt=2023-06-19/*" \
gs://<project-id>-batch-ingestion/avro-raw/