選擇時間序列識別碼的最佳做法
注意
2025 年 3 月之後,時間序列深入解析 (TSI) 服務將不再受到支援。 請考慮盡快將現有 TSI 環境移轉至替代解決方案。 如需淘汰和移轉的詳細資訊,請瀏覽我們的文件。
本文摘要說明 Azure 時間序列深入解析 Gen2 環境時間序列識別碼的重要性,以及選擇時間序列識別碼的最佳做法。
選擇時間序列識別碼
選取適當的時間序列識別碼非常重要。 選擇時間序列識別碼就像選擇資料庫的分割區索引鍵一樣。 此為建立 Azure 時間序列深入解析 Gen2 環境時所需。
請觀看環境佈建教學課程,獲得時間序列識別碼的詳細說明。 您會檢視兩個不同的 JSON 遙測承載範例,以及每個範例的正確時間序列識別碼選取項目。
重要
時間序列識別碼為:
- 「區分大小寫的字串」屬性:字母和字元大小寫用於搜尋、比較、更新及分割時。
- 「固定」屬性:建立後就無法變更。
提示
如果您的事件來源是 IoT 中樞,您的時間序列識別碼可能會是 iothub-connection-device-id。如果您打算使用 IoT 隨插即用裝置型號,或在沒有元件的情況下使用,您應該在複合索引鍵中加入 dt-subject,以免未來需要。
要遵循的索引鍵最佳做法包括:
- 挑選具有許多相異值 (例如數百個或數千個) 的分割區索引鍵。 在許多情況下,這可能是 JSON 中的裝置識別碼、感應器識別碼或標記識別項。
- 在您時間序列模型.的分葉節點層級,時間序列識別碼應該是唯一的。
- 時間序列識別碼的屬性名稱字串字元上限為 128 個。 時間序列識別碼的屬性值字元上限為 1,024 個。
- 如果遺漏時間序列識別碼的唯一屬性值,會將其視為 null 值,並遵循唯一性限制式的相同規則。
- 如果您的時間序列識別碼巢狀於複雜的 JSON 物件內,請務必在提供屬性名稱時,遵循輸入壓平合併規則。 請查看範例 B。
- 您也可以選取最多「三個」索引鍵屬性當作時間序列識別碼。 其組合將會是代表時間序列識別碼的複合索引鍵。
注意
這三個索引鍵屬性必須是字串。 您必須查詢此複合索引鍵,而不是一次查詢一個屬性。
選取多個索引鍵屬性
下列情節說明選取多個索引鍵屬性當作時間序列識別碼。
範例 1:具有唯一索引鍵的時間序列識別碼
- 您有舊版資產群。 每個都有唯一索引鍵。
- 一個資產群會以屬性 deviceId 專門識別。 針對另一個資產群,唯一屬性為 objectId。 兩個資產群都沒有包含對方的唯一屬性。 在此範例中,您會選取兩個索引鍵作為唯一索引鍵,分別是 deviceId 和 objectId。
- 我們接受 null 值,事件裝載中沒有屬性會計為 null 值。 這也是將資料傳送到兩個事件來源時適當的處理方式,其中每個事件來源中的資料都會有唯一的時間序列識別碼。
範例 2:具有複合索引鍵的時間序列識別碼
- 您需要讓同一資產群內的多個特性都必須是唯一的。
- 您是智慧建築製造商,在每個房間中部署感應器。 在每個房間內,sensorId 的值通常都相同。 例如 sensor1、sensor2 和 sensor3。
- 您的建築在屬性 flrRm 的站台間有重疊的樓層和房間號碼。 這些號碼有 1a、2b 和 3a 等值。
- 您有屬性 location,內含 Redmond、Barcelona 及 Tokyo 等值。 為了建立唯一性,您指定下列三個屬性當作時間序列識別碼索引鍵:sensorId、flrRm 和 location。
範例原始事件:
{
"sensorId": "sensor1",
"flrRm": "1a",
"location": "Redmond",
"temperature": 78
}
在 Azure 入口網站中,您可以輸入複合索引鍵,如下所示:
注意
在 Azure 入口網站中,請勿在一個文字方塊中輸入以逗點分隔的屬性名稱,否則會視為是包含逗點的單一屬性名稱。 在各自的文字方塊中輸入每個屬性名稱。
下一步
請參閱 JSON 壓平合併和逸出規則 (機器翻譯),了解事件的儲存方式。
規劃 Azure 時間序列深入解析 Gen2 環境 (機器翻譯)。