Azure 時間序列深入解析 Gen2 中的時間序列模型
注意
「時間序列深入解析」服務將於 2024 年 7 月 7 日淘汰。 請考慮盡快將現有的環境移轉至替代解決方案。 如需淘汰和移轉的詳細資訊,請造訪我們的文件。
本文說明時間序列模型、功能,以及如何開始在 Azure 時間序列深入解析 Gen2 環境中建置和更新您自己的模型。
提示
- 瞭解如何使用 Azure 時間序列深入解析總管來處理時間序列模型。
摘要
傳統上,從 IoT 裝置收集的資料缺發關聯的資訊,因此很難快速地尋找及分析感應器。 時間序列模型的主要動機是簡化尋找及分析 IoT 或時間序列資料的作業。 為了達到此目標,它藉由提供策劃、維護和擴充時間序列資料的功能,協助準備取用者可用的資料集以進行分析。
案例:Contoso 的新智慧型烤箱
請考慮 Contoso 智慧型烤箱的虛構案例。 在此案例中,假設每個 Contoso 智慧型烤箱都有五個溫度感應器,四個頂端加熱器各使用一個,一個用於烤箱本身。 每個 Contoso 溫度感應器最近才分別傳送、儲存其資料及以視覺效果包含。 為了監視其廚房設備,Contoso 使用每個感應器各自專屬的基本資訊圖表。
雖然 Contoso 對其初始資料和視覺效果解決方案相當滿意,但有幾項限制逐漸變得明顯:
- 客戶想知道當大部分的頂端加熱器都開啟時,整個烤箱會變得多熱。 Contoso 在分析整個烤箱情況和提出統一答案方面遇到更多困難。
- Contoso 工程師想確認頂端加熱器同時執行不會造成電力不足。 他們很難交叉參考哪些溫度和電壓感應器相互關聯,以及如何在商店中找到。
- Contoso 品質保證小組想要稽核並比較兩個感應器版本之間的歷程記錄。 他們很難判斷哪些資料屬於哪個感應器版本。
若無法建構、組織及定義主要智慧型烤箱時間序列模型,每個溫度感應器的資料點都會維持錯位、孤立且資訊量少的狀態。 將這些資料點轉換成可操作的深入解析較為困難,因為每個資料集彼此互相獨立。
這些限制突顯出智慧型資料彙總和視覺效果工具對 Contoso 新型烤箱的重要性:
- 當您能為資料建立關聯並整合到一個方便查看的檢視畫面中,就證實了資料視覺效果很實用。 以顯示電壓感應器及溫度感應器為例。
- 要管理數個實體的多維度資料還有比較、縮放和時間範圍功能,可能很難完成。
時間序列模型提供一套方便的解決方案,能解決此虛構範例中遇到的許多情況:
- 時間序列模型在查詢和瀏覽作業中扮演重要角色,因為它允許跨時間範圍,以及在不同感應器和裝置種類之間繪製比較圖表,藉此將資料關聯化。 (A)
- 資料會進一步關聯化,因為時間序列模型中保存的資料會將時間序列查詢計算保留為變數,並在查詢時重複使用。
- 時間序列模型會組織及彙總資料,以改善視覺效果和管理功能。 (B)
主要功能
以簡化管理時間序列關聯化的作業為目的,時間序列模型在 Azure 時間序列深入解析 Gen2 中提供下列功能。 它可協助您:
- 運用純量函數、彙總作業等撰寫及管理計算或公式。
- 定義上下層式關聯性,以啟用瀏覽、搜尋和參考。
- 將與執行個體相關聯的屬性定義為執行個體欄位的一部分,並用來建立階層。
元件
時間序列模型有三個主要元件:
系統會結合這些元件以指定時間序列模型並組織您的資料。
您可以透過 Azure 時間序列深入解析總管建立及管理時間序列模型。 時間序列模型設定可以透過模型設定 API 來管理。
時間序列模型執行個體
時間序列模型執行個體是時間序列本身的虛擬標記法。
在大部分情況下,系統會根據儲存為時間序列識別碼的 deviceId 或 assetId 來唯一識別執行個體。
執行個體具有與其相關聯的描述性資訊,稱為執行個體屬性,例如時間序列識別碼、類型、名稱、描述、階層和執行個體欄位。 執行個體屬性至少會包含階層資訊。
執行個體欄位是描述性資訊的集合,可包含階層層級的值,以及製造商、操作員等資料。
設定 Azure 時間序列深入解析 Gen2 環境的事件來源之後,系統會自動在時間序列模型中探索和建立執行個體。 您可以使用時間序列模型查詢,透過 Azure 時間序列深入解析總管來建立或更新執行個體。
執行個體屬性
執行個體是由 timeSeriesId、typeId、name、description、hierarchyIds 和 instanceFields 定義。 每個執行個體會對應至一個類型和一或多個階層。
屬性 | 說明 |
---|---|
timeSeriesId | 與執行個體相關聯之時間序列的唯一識別碼。 在大部分情況下,系統會以 deviceId 或 assetId 等屬性唯一識別執行個體。 在某些情況下,可以使用更具體的複合識別碼,結合最多 3 個屬性。 |
typeId | 與執行個體相關聯的時間序列模型類型之唯一字串識別碼 (區分大小寫)。 根據預設,所有探索到的新執行個體都會與預設類型相關聯。 |
NAME | name 為選用屬性,且區分大小寫。 如果 name 無法使用,會預設為 timeSeriesId。 如果有提供名稱,仍可在 well 中取得 timeSeriesId。 |
description | 執行個體的文字描述。 |
hierarchyIds | 定義執行個體所屬的階層。 |
instanceFields | 執行個體的屬性,以及定義執行個體的任何靜態資料。 它們定義階層或非階層的值,同時也支援建立索引以執行搜尋作業。 |
注意
階層是使用執行個體欄位所建置。 您可以為之後的執行個體屬性定義新增其他 instanceFields。
執行個體具有下列 JSON 標記法:
{
"timeSeriesId": ["PU2"],
"typeId": "545314a5-7166-4b90-abb9-fd93966fa39b",
"hierarchyIds": ["95f0a8d1-a3ef-4549-b4b3-f138856b3a12"],
"description": "Pump #2",
"instanceFields": {
"Location": "Redmond",
"Fleet": "Fleet 5",
"Unit": "Pump Unit 3",
"Manufacturer": "Contoso",
"ScalePres": "0.54",
"scaleTemp": "0.54"
}
}
提示
有關執行個體 API 建立、讀取、更新和刪除 (CRUD) 支援,請參閱資料查詢一文和執行個體 API REST 文件。
時間序列模型階層
時間序列模型階層會藉由指定屬性名稱和其關係來組織執行個體。
您可以在指定的 Azure 時間序列深入解析 Gen2 環境中設定多個階層。 時間序列模型執行個體可以對應到單一或多個階層 (一對多關係)。
階層定義
階層由 id、name 和 source 定義。
屬性 | 說明 |
---|---|
id | 階層的唯一識別碼,用於定義執行個體等情況。 |
NAME | 用來提供階層名稱的字串。 |
來源 | 指定組織化階層或路徑,這是使用者想建立的由上而下型上下層順序階層。 父子式屬性會對應執行個體欄位。 |
階層以 JSON 表示為:
{
"hierarchies": [
{
"id": "6e292e54-9a26-4be1-9034-607d71492707",
"name": "Location",
"source": {
"instanceFieldNames": [
"state",
"city"
]
}
},
{
"id": "a28fd14c-6b98-4ab5-9301-3840f142d30e",
"name": "ManufactureDate",
"source": {
"instanceFieldNames": [
"year",
"month"
]
}
}
]
}
在先前的 JSON 範例中:
Location
定義了具有父代states
和子系cities
的階層。 每個location
都可以有多個states
,而後者可以有多個cities
。ManufactureDate
定義了具有父代year
和子系month
的階層。 每個ManufactureDate
都可以有多個years
,而後者可以有多個months
。
提示
有關階層 API 建立、讀取、更新和刪除 (CRUD) 支援,請參閱資料查詢一文和階層 API REST 文件。
階層範例
思考以下範例:階層 H1 的 instanceFieldNames 定義中包含 building
、floor
和 room
:
{
"id": "aaaaaa-bbbbb-ccccc-ddddd-111111",
"name": "H1",
"source": {
"instanceFieldNames": [
"building",
"floor",
"room"
]
}
}
指定先前的定義和數個時間序列中使用的執行個體欄位,顯示的階層屬性和值會如下表所示:
時間序列識別碼 | 執行個體欄位 |
---|---|
ID1 | "building" = "1000", "floor" = "10", "room" = "55" |
ID2 | "building" = "1000", "room" = "55" |
ID3 | "floor" = "10" |
ID4 | "building" = "1000", "floor" = "10" |
ID5 | "building"、"floor" 和 "room" 均未設定。 |
時間序列 ID1 和 ID4 會在 Azure 時間序列深入解析總管中顯示為階層 H1 的一部分,因為它們已完整定義並正確排序 building、floor 和 room 參數。
其他執行個體會分類在 [無父系執行個體] 下,因為它們不符合指定的資料階層。
時間序列模型類型
時間序列模型「類型」協助您定義執行計算的變數或公式。 所有類型都會與特定集區相關聯。
一個類型可以有一或多個變數。 例如,某個時間序列模型深入解析執行個體類型可能是「溫度感應器」,其中包含的變數有 avg temperature、min temperature 和 max temperature。
提示
有關類型 API 建立、讀取、更新和刪除 (CRUD) 支援,請參閱資料查詢一文和類型 API REST 文件。
類型屬性
時間序列模型類型是由 id、name、description 和 variables 定義。
屬性 | 說明 |
---|---|
id | 類型的區分大小寫唯一字串識別碼。 |
NAME | 用來提供類型名稱的字串。 |
description | 類型的字串描述。 |
variables | 指定與類型相關聯的變數。 |
符合下列 JSON 類型的範例:
{
"types": [
{
"id": "1be09af9-f089-4d6b-9f0b-48018b5f7393",
"name": "DefaultType",
"description": "Default type",
"variables": {
"EventCount": {
"kind": "aggregate",
"value": null,
"filter": null,
"aggregation": {
"tsx": "count()"
}
},
"Interpolated Speed": {
"kind": "numeric",
"value": {
"tsx": "$event['Speed-Sensor'].Double"
},
"filter": null,
"interpolation": {
"kind": "step",
"boundary": {
"span": "P1D"
}
},
"aggregation": {
"tsx": "right($value)"
}
}
}
}
]
}
時間序列模型類型可以有許多變數,用於指定事件的公式和計算規則。 深入瞭解如何定義時間序列模型變數