類型

Manufacturing Data Engine (MDE) 可透過剖析,將一類來源訊息轉換為特定類型的記錄。

類型是設定實體,代表剖析作業的目標,並說明一組結構和語意相似的記錄,這些記錄具有共同的精細程度,且 (視需要) 共用特定中繼資料環境。

來源到目標

舉例來說,您可以建立「機器狀態」和「震動感應器讀數」類型。第一種可用於模擬機器狀態變化事件,例如「執行中」、「閒置」、「排定的維護作業」和「未排定的維護作業」;第二種則可用於模擬一連串的數值震動感應器讀數。

MDE 隨附一組預設型別,但您可以建立新的型別。類型是由下列特徵定義:

  • 名稱:類型名稱。
  • 原型:類型所依據的原型名稱。MDE 中的型別一律只會與一個原型相關聯
  • 儲存空間規格:每個資料接收器的設定清單。儲存空間規格可供您設定是否要將記錄寫入資料接收器,以及提供更多接收器專屬設定。
  • 選用設定參數,包括:
    • data 欄位的 JSON 結構定義 (僅適用於離散和連續原型類型)。
    • 中繼資料 bucket 關聯:中繼資料 bucket 清單,這類 bucket 的記錄必須提供執行個體參照。

類型和資料接收器

系統會透過為特定類型啟用的資料接收器,處理該類型的記錄串流。您可以啟用 (或停用) 類型資料接收器。舉例來說,您可以設定將某類型的記錄寫入 BigQuery,但不要寫入 Cloud Storage。

支援的資料接收器

MDE 支援下列資料接收器:

  1. BigQuery
  2. Bigtable/Federation API
  3. Cloud Storage
  4. Pub/Sub (JSON 和 Protobuf)

BigQuery 資料接收器

建立新類型時,MDE 會在 mde_data 資料集中自動建立對應的類型資料表。每種記錄都會寫入對應的類型資料表。

Cloud Storage 資料接收器

記錄會儲存在名為 <project_id>-gcs-ingestion 的 Cloud Storage bucket 中,並以 AVRO 檔案格式儲存,使用 Hive 分割,每 10 分鐘一個視窗,每個視窗 10 個分割區。記錄會依類型分組到資料夾中。

Pub/Sub 資料接收器

Pub/Sub 接收器會將記錄發布至專屬主題。Pub/Sub 訊息結構定義請參閱「Pub/Sub 接收器訊息結構定義」。

中繼資料具體化

您可以設定類型上的每個資料接收器,在記錄中具體化中繼資料。如果啟用這項設定,中繼資料例項參照會解析為中繼資料例項物件,且物件會納入記錄。中繼資料的保存或輸出方式取決於資料接收器。舉例來說,在 BigQuery 中,具體化的中繼資料會寫入 materialized_metadata_field,並採用下列結構定義:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "additionalProperties": {
    "type": "object",
    "description": "Metadata instance"
  }
}

原型

典型案例代表類型的超類別,每個典型案例的設計目的,都是為記錄提供最佳的處理和儲存模型。原型會定義剖析器發出的特定類型記錄中,必須存在的必要核心欄位。MDE 隨附一組六個系統定義的標準和叢集原型,並分為三種原型系列:

  1. 數值資料序列 (NDS)
  2. 離散資料序列 (DDS)
  3. 連續資料序列 (CDS)

原型

MDE 中的型別一律只會與一個原型相關聯,且型別的原型是在建立時定義。

您可以透過型別,對剖析器發出的 Proto 記錄進一步定義限制,這些限制不屬於原型所施加的限制。舉例來說,您可以為型別指定 data 欄位的形狀,也可以定義型別的記錄必須由特定中繼資料進行情境化。

總而言之,proto 記錄結構定義包含下列項目:

  1. 原型結構定義
  2. 輸入結構定義

原型系列

每個典型案例系列都包含兩種典型案例:

  1. 標準
  2. 已分群

MDE 1.3 版導入了叢集原型的概念,可擴充標準原型的功能。叢集原型提供四個通用欄位,可在 剖析器中填入值。每個資料接收器都會使用這四個欄位,提供額外的查詢和資料存取權功能:

  • BigQuery:BigQuery 中的叢集類型資料表會依序以四個通用欄位叢集。這樣一來,您就能根據叢集欄位,在 BigQuery 中有效率地篩選資料。
  • Bigtable Federation API:Federation API 會使用叢集欄位在 Bigtable 中建構資料列鍵,進而啟用新的資料存取模式。
  • Pub/Sub:Pub/Sub 訊息會將欄位做為 Pub/Sub 訊息中的第一層欄位傳遞。

數字原型系列

數字原型系列旨在做為類型基礎,用來模擬一系列帶有時間戳記的數字訊息,例如溫度感應器發出的一連串讀數。

原型標準版和叢集版定義下列基本記錄結構定義:

標準

欄位 資料類型 必填
tagName 字串
value 數字
eventTimestamp 整數 (格式為 Epoch 毫秒)

已分群

欄位 資料類型 必填
tagName 字串
value 數字
eventTimestamp 整數 (格式為 Epoch 毫秒)
clustered_column_1 字串
clustered_column_2 字串
clustered_column_3 字串
clustered_column_4 字串

離散原型系列

離散原型系列旨在做為時間戳記事件模型類型的基礎,例如特定機器或程序中,由操作人員驅動的參數變更。

原型標準版和叢集版定義下列基本記錄結構定義:

標準

欄位 資料類型 必填
tagName 字串
data JSON 物件
eventTimestamp 整數 (格式為 Epoch 毫秒)

已分群

欄位 資料類型 必填
tagName 字串
data JSON 物件
eventTimestamp 整數 (格式為 Epoch 毫秒)
clustered_column_1 字串
clustered_column_2 字串
clustered_column_3 字串
clustered_column_4 字串

連續原型系列

連續原型系列旨在做為類型基礎,以模擬由開始和結束時間戳記定義的一連串連續狀態,例如機器在一段連續時間內的運作狀態。

原型標準版和叢集版定義下列基本記錄結構定義:

標準

欄位 資料類型 必填
tagName 字串
data JSON 物件
eventTimestampStart 整數 (格式為 Epoch 毫秒)
eventTimestampEnd 整數 (格式為 Epoch 毫秒)

已分群

欄位 資料類型 必填
tagName 字串
data JSON 物件
eventTimestampStart 整數 (格式為 Epoch 毫秒)
eventTimestampEnd 整數 (格式為 Epoch 毫秒)
clustered_column_1 字串
clustered_column_2 字串
clustered_column_3 字串
clustered_column_4 字串

[Data] (資料) 欄位

「離散資料序列」和「連續資料序列」原型接受 data 欄位的 JSON 結構定義。如果已定義欄位的 JSON 結構定義,系統會在執行階段根據結構定義,驗證剖析器發出的記錄所含 data 欄位的值。舉例來說,假設您為離散時間序列類型定義下列結構定義:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "eventName": {
      "type": "string"
    }
  },
  "required": ["eventName"]
}

使用離散時間序列類型的先前結構定義時,剖析器發出的下列 (部分) 該類型記錄無效:

{
  "data": {
    "complex": {
      "machineName": "example"
    }
  }
}

如果資料驗證失敗,記錄會移至死信佇列。稍後可以手動處理死信佇列中的記錄。

中繼資料 bucket

類型可以參照中繼資料值區。型別上的中繼資料值區參照會定義記錄是否可以或必須 (視 required 屬性的值而定) 提供中繼資料值區執行個體的參照。

類型上的中繼資料 bucket 參照會定義該類型記錄的中繼資料合約。舉例來說,您可以定義某類型所有記錄都必須與裝置中繼資料建立關聯 (在名為「device」的中繼資料 bucket 中提供中繼資料例項的參照)。

如果中繼資料 bucket 與某個型別相關聯,且 required 旗標設為 true,則剖析器發出的該型別記錄若未提供中繼資料 bucket 執行個體的參照,就會移至無法傳送的郵件佇列。詳情請參閱「如何重新處理訊息」。

類型版本管理

版本管理類型有很多種,以下各節將分別說明。

建立新類型版本

您可以為特定類型建立新版本。每個新版本都可以指定其他中繼資料值區關聯,或修改資料欄位的結構定義。不過,為確保類型生命週期內資料的一致性,新類型版本只能向前演進,且必須遵守版本管理規則。新版類型可進行下列變更:

5 月:

  • 在資料結構定義中新增選填欄位。
  • 將資料結構定義中的必填欄位標示為選填。
  • 新增中繼資料值區參照。

禁止事項:

  • 從資料結構定義中移除欄位。
  • 變更資料結構定義中現有欄位的資料類型。
  • 在資料架構中將選用屬性標示為必要屬性。
  • 移除中繼資料 bucket 參照。

編輯現有類型版本

您可以在現有類型版本中更新儲存規格和轉換,不必建立新的類型版本。

輸入編輯

如要對類型執行大部分作業,必須建立新的類型版本或編輯現有類型版本。您只能啟用或停用與版本無關的類型。停用類型後,該類型的所有版本都會停止接受資料。

類型命名限制

型別名稱可由下列項目組成:

  • 字母 (大寫和小寫)、數字和特殊字元 -_
  • 長度上限為 255 個半形字元。

您可以使用下列規則運算式進行驗證:^[a-z][a-z0-9\\-_]{1,255}$

如果您嘗試建立違反命名限制的實體,系統會顯示 400 error