共用方式為


在 Azure IoT 數據處理器預覽管線中使用最後一個已知值

重要

已啟用 Azure Arc 的 Azure IoT 操作預覽版目前為預覽狀態。 請勿在生產環境使用此預覽版軟體。

請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

使用資料處理器管線中上次已知的值 (LKV) 階段,以維護最新的完整資料記錄。 LKV 階段會追蹤管線中訊息索引鍵/值組的最新值。 接著,階段可利用追蹤到的 LKV 值擴充訊息。 對於依賴下列項目的下游流程,追蹤上次已知的值及擴充相當重要:

  • 特定時間戳記的多個數列資料點。
  • 一律具有特定索引鍵值的承載。

在資料處理管線中,LKV 階段為選擇性階段。 使用 LKV 階段時,您可以:

  • 將多個 LKV 階段新增至管線。 每個 LKV 階段均可追蹤多個值。
  • 使用儲存的 LKV 值擴充訊息,確保資料全面且完整。
  • 使用傳入訊息的最新值自動更新 LKV。
  • 針對每個邏輯分割區分別追蹤 LKV。 LKV 階段會在各個分割區中獨立執行。
  • 設定各個追蹤 LKV 的到期時間,以管理其有效期間。 您可透過此控制項確保訊息不會以過時的值進行擴充。

LKV 階段會以時間順序維護資料完整性。 此階段可確保具有較早時間戳的訊息,不會覆寫或取代具有較晚時間戳之訊息的 LKV。

LKV 階段可追蹤上次已知的值,並以其擴充傳入訊息。 這些擴充值代表先前已記錄的資料,不一定為目前的即時值。 請確保此行為符合您預期的資料處理方式。

必要條件

若要設定和使用匯總管線階段,您需要已部署的 Azure IoT 數據處理器預覽實例,其中包含選擇性的數據處理者元件。

設定階段

LKV 階段 JSON 設定負責定義階段的詳細資料。 若要編寫階段,可透過與表單架構使用者介面互動,或在 [進階] 索引標籤上提供 JSON 設定:

欄位 描述 是必要欄位 預設 範例
名稱 階段的使用者定義名稱。 Yes - lkv1
描述 階段的使用者定義描述。 No - lkv1
屬性 > 輸入路徑 要追蹤之索引鍵的路徑 Yes - .payload.temperature
屬性 > 輸出路徑 輸出訊息中要寫入 LKV 之位置的路徑 Yes - .payload.temperature_lkv
屬性 > 到期時間 追蹤到的 LKV 僅在使用者定義的時間間隔內有效,之後便不會使用儲存的值擴充輸出訊息。 系統會追蹤各個 LKV 索引鍵的到期時間。 No - 10h
屬性 > 時間戳記路徑 輸出訊息中要寫入 LKV 最後更新時間戳記之位置的路徑 No False -

加入時間戳記路徑將有助於精準掌握 LKV 的記錄時間,並強化透明度與可追蹤性。

inputPath 等於 outputPath

傳出訊息為實際的訊息值,而若訊息承載中未有要追蹤的索引鍵,其則為 LKV。 此階段會優先使用任何傳入值,不會以 LKV 覆寫。 若要識別訊息值是否為 LKV 值,請使用時間戳記路徑。 唯有在訊息中的值為追蹤的 LKV 時,傳出訊息中才會包含時間戳記路徑。

inputPath 不等於 outputPath

此階段會將 LKV 寫入所有傳入訊息的 outputPath。 可使用此設定來追蹤後續訊息承載中值之間的差異。

範例設定

下列範例顯示 LKV 階段的範例訊息,該訊息於 10:02 抵達,並具有包含追蹤 .payload.temperature LKV 值的承載:

{ 
  { 
    "systemProperties":{ 
        "partitionKey":"pump", 
        "partitionId":5, 
        "timestamp":"2023-01-11T10:02:07Z" 
    }, 
    "qos":1, 
    "topic":"/assets/pump/#" 
    }, 
    "payload":{ 
        "humidity": 10, 
        "temperature":250, 
        "pressure":30, 
        "runningState": true 
    } 
} 

LKV 設定:

欄位
輸入路徑* .payload.temperature
輸出路徑 .payload.lkvtemperature
到期時間 10h
時間戳記路徑 .payload.lkvtemperature_timestamp

追蹤的 LKV 值為:

  • .payload.temperature 為 250。
  • LKV 的時間戳記為 2023-01-11T10:02:07Z

針對於 11:05 抵達且承載中未包含溫度屬性的訊息,LKV 階段會使用追蹤的值擴充訊息:

於 11:05 輸入至 LKV 階段的範例:

{ 
    "systemProperties":{ 
        "partitionKey":"pump", 
        "partitionId":5, 
        "timestamp":"2023-01-11T11:05:00Z" 
    }, 
    "qos":1, 
    "topic":"/assets/pump/#" 
    }, 
    "payload":{ 
        "runningState": true 
    } 
} 

於 11:05 自 LKV 階段輸出的範例:

{ 
    "systemProperties":{ 
        "partitionKey":"pump", 
        "partitionId":5, 
        "timestamp":"2023-01-11T11:05:00Z" 
    }, 
    "qos":1, 
    "topic":"/assets/pump/#" 
    }, 
    "payload":{ 
        "lkvtemperature":250, 
        "lkvtemperature_timestamp"":"2023-01-11T10:02:07Z" 
        "runningState": true 
    } 
}