轉換
製造業資料引擎 (MDE) 提供簡單明瞭的方式,可在擷取期間對訊息進行後續處理,並從輸入訊息產生新的衍生標記和記錄。這些後處理器稱為「轉換」。這些轉換可以與特定類型建立關聯,並產生新訊息,然後重新擷取至 MDE。轉換是內建的 Dataflow 管道,可使用特定轉換參數進行設定。
MDE 1.3 以上版本提供兩種預設轉換:
- 群組活動異動
- 視窗化
轉換會在類型層級啟用。這表示系統會轉換屬於該類型的所有代碼。一個型別可以與零個、一個或多個轉換建立關聯。您可以在網頁介面和使用設定 API 中,設定類型與特定轉換之間的關聯。類型隨時可以與轉換建立關聯,不需要時也可以移除關聯。
轉換可能需要轉換參數來定義特定行為。轉換參數是各轉換類型專屬的參數,且不同轉換的參數可能不同。
特定轉換的轉換參數值也是在類型層級設定。不同類型可以使用不同的參數值,並以不同方式使用相同的轉換。
轉換會接收所有對應至該類型的訊息做為輸入內容,前提是轉換處於啟用狀態。每則訊息都會由 Dataflow 中的轉換處理器處理。
任何轉換的輸出內容都是原始 JSON 訊息,會擷取至初始登陸主題。MDE 會在每次轉換時提供專屬的設定套件。如果您打算使用轉換,則需要將這個設定套件套用至 MDE。設定套件會建立一組訊息類別、剖析器、型別和中繼資料 bucket 集合。這些設定實體可讓 MDE 識別及處理轉換輸出訊息,並轉換為特定類型。轉換專屬類型會儲存轉換發出的資訊。這些值也會與特定轉換中繼資料值區建立關聯,儲存原始轉換代碼或記錄的參考資訊。
系統提供兩種類型,可處理各項轉換產生的原始訊息:
group-event-change-records:群組事件變更轉換輸出訊息的目的地類型。window-transformation-records:視窗轉換輸出訊息的目的地類型。
群組活動變更轉換
這項轉換會監控代碼或代碼群組中的任何欄位,並在任何代碼中監控的值變更時產生事件。這項轉換可以與任何原型類型建立關聯。網頁介面會以 eventChange 顯示轉換。
這項轉換會發出訊息,並剖析為相關設定套件中提供的特定 CONTINUOUS_DATA_SERIES 類型,命名為 group-event-change-records。這個型別包含值變更期間的開始時間和結束時間,以及先前的值、目前的值和觸發變更的標記名稱。
您可以定義要一起監控的同類型標記群組。您可以選擇主要條件,定義標記的分組方式。 系統會一併監控鍵值相同的代碼。key 的值可以是標記 proto 的任何元素,包括任何資料欄位和中繼資料的任何元素。
如要讓轉換適用於個別標記,請將鍵設為 TagName。
參數
如要設定這項轉換,您必須提供下列兩項轉換參數:
主要運算式:在網頁介面中會顯示為
keyExpression。 定義用於分組代碼的運算式。系統會一併監控所有具有相同鍵運算式值的代碼。每當系統在任何標記中偵測到變更,轉換就會發出值變更事件。系統會將這些值與相同標記的先前值進行比較,但只要有任何標記變更,就會觸發事件。鍵運算式定義為 SpEL 運算式,且可使用標記原型中的任何可用欄位。舉例來說,如要只根據代碼名稱監控單一代碼,SpEL 運算式會定義為:#message['tagName']或者,如要根據通用中繼資料欄位 (例如機器名稱) 將標記分組 (假設
asset-hierarchybucket 存在,且其中有名為machine-name的屬性),則可將運算式設為:#message['metadata']['asset-hierarchy']['machine-name']值運算式:在網頁介面中會顯示為
valueExpression。 定義轉換監控的值欄位,以發出新的變更事件。這項條件也會定義為 SpEL 運算式。運算式可以使用標記原型結構的任何欄位。運算式的輸出內容必須為String類型,才能正常運作。舉例來說,如要監控標記原型
Data區段中的value欄位,值運算式可以設為:#message['data']['numeric'].toString()
輸出訊息
群組事件變更轉換產生的「輸出訊息」內容,會提供偵測到的事件詳細資料。輸出訊息中可用的特定屬性如下:
TagName:轉換會在 Tagname 下建立事件,該事件對應於鍵運算式的值和後置字元"_event_change"。如果「金鑰運算式」定義為個別的 TagName,衍生代碼會是"TagName_event_change"。- 事件變更連續時間戳記物件:包含事件的初始 (
event_timestamp_start屬性) 和最終 (event_timestamp_end屬性) 時間戳記。此外,這個物件也包含事件的持續時間 (duration屬性),以double表示。 - 事件變更訊息資料物件:包含事件期間值有變更的標記名稱 (
changed_tags屬性),以及事件發出時符合分組條件的標記清單 (contributing_tags屬性)。兩者都可以在每則訊息中包含多個標記。 - 標記值變更物件:觸發狀態變更事件的名稱 (
tag_name屬性)、舊值 (old_expression_value屬性)、新值 (new_expression_attribute屬性) 和訊息 (message_id屬性)。 - 變更值訊息物件 (適用於 1.3.6 以上版本):包含觸發事件變更的訊息。
請參閱「參考資料」一節中的特定結構定義。
時間區間轉換
這項轉換會將 Windowing 函式套用至特定類型的所有標記。視窗化是指將一段時間內的多筆記錄匯總為單一記錄。視窗轉換可以與任何原型類型建立關聯。這項功能可摘要說明 1 分鐘到 60 分鐘的標籤記錄。轉換的結果是原始訊息,其中包含所選時間範圍內價值運算式的摘要值。
只要每個視窗轉換的 Id (如參數中所定義) 在類型中是唯一的,這個轉換就能套用至同一類型多次。您可以使用網頁介面新增視窗轉換,但必須使用 API,才能為特定型別新增多個視窗轉換。
轉換會產生指定類型的衍生標記 (名為 window-transformation-records),其中包含該標記在該時間範圍內收到的所有記錄摘要。這項轉換會在代碼層級運作:系統會為與轉換相關聯的每種代碼類型產生摘要代碼。代碼名稱是由原始 Tagname、後置字元 -window-stats 和視窗轉換的 id 組成。
參數
這項轉換作業需要三個參數才能運作:
- 時間範圍長度:網頁介面會顯示為
durationMinutes。這是指要套用的時間範圍長度 (以分鐘為單位)。舉例來說,如果值為 1,系統會產生解析度為 1 分鐘的衍生時間序列。 - 視窗 ID:可在網頁介面中找到,顯示為
id。為類型中的每個視窗轉換指派專屬 ID,以便平行套用多個轉換。ID 可以是任何字串。 值運算式:可在網頁介面中以
valueExpression形式使用。這是套用至標記原型的 SpEL 運算式,用於產生數值,並由視窗轉換進行摘要。舉例來說,如果您需要使用一般數值代碼的值欄位,valueExpression的運算式可以定義為:#message['data']['numeric']
輸出訊息
轉換會針對轉換參數 durationMinutes 定義的每個時間週期發出一個訊息。輸出訊息包含下列屬性:
- TagName:衍生時間序列的標記名稱。這項資訊是由視窗轉換自動產生。這個名稱是由原始 TagName、後置字元
-window-stats,以及視窗轉換的id所組成。舉例來說,如果 TagName 為Temperature,ID 為1,則衍生代碼會命名為Temperature-window-stats-1。 - TimeStamp:包含 Window 的開始和結束時間戳記 (可做為
event_timestamp_start和event_timestamp_end屬性)。 - 視窗摘要統計資料:包含這段期間的所有摘要資料,包括:
- 平均值:時間範圍內收到的所有值的平均值。
- Min:時間範圍內收到的所有值中,最小的值。
- Max:時間範圍內收到的所有值中,最大值。
- 標準差:時間範圍內收到的所有值的標準差。
- p50:在時間範圍內收到的值不會超過 50% 的信賴水準。
- p90:在時間範圍內收到的值,有 90% 的機率不會超過這個值。
- 總和:時間範圍內收到的所有值總和。
- 計數:時間範圍內收到的值數量。
- 差異:時間範圍內收到的最後一個值與第一個值之間的差異。
詳情請參閱「轉換結構定義」一節中的特定結構定義。