類型

製造資料引擎 (MDE) 可透過剖析,將一類來源訊息轉換為特定類型的記錄。

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

來源到目標

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

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

  • 名稱:類型的名稱。
  • 原型:類型所依據的原型名稱。MDE 中的型別一律只會與一個原型相關聯
  • 儲存空間規格:每個資料接收器的設定清單。儲存空間規格可供您設定是否要將記錄寫入資料接收器,以及提供更多接收器專屬設定。
  • 選用設定參數,包括:
    • 資料欄位的 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 中,並使用 Hive 分割功能,以 AVRO 檔案格式儲存。每個視窗為 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 ms)

已分群

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

離散原型系列

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

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

標準

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

已分群

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

連續原型系列

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

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

標準

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

已分群

欄位 資料類型 必填
tagName 字串
data JSON 物件
eventTimestampStart 整數 (格式為 epoch ms)
eventTimestampEnd 整數 (格式為 epoch ms)
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

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

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

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

類型版本管理

版本控管類型有很多種,以下各節將逐一說明。

建立新類型版本

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

5 月:

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

可能無法:

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

編輯現有類型版本

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

輸入編輯

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

類型命名限制

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

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

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

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