類型

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。