在 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
}
}
相關內容
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應