新增 Azure 時間序列深入解析 Gen2 中的 Long 資料類型支援
注意
2025 年 3 月之後,將不再支援時間序列深入解析 (TSI) 服務。 請考慮盡快將現有 TSI 環境移轉至替代解決方案。 如需淘汰和移轉的詳細資訊,請造訪我們的文件。
新增 Long 資料類型支援只會影響我們在 Azure 時間序列深入解析 Gen2 環境中儲存數值資料和對其編製索引的方式。 如果您有 Gen1 環境,則可以忽略這些變更。
從 2020 年 6 月 29 日或 6 月 30 日開始 (視您的所在區域而定),您的資料會編製索引為 Long 和 Double。 如果您有關於這項變更的任何問題或疑慮,請透過 Azure 入口網站提交支援票證,並提及此通訊。
如果您受到下列任何案例的影響,請進行建議的變更:
- 案例 1:您目前使用時間序列模型變數,並只在遙測資料中傳送整數資料類型。
- 案例 2:您目前使用時間序列模型變數,並在遙測資料中同時傳送整數和非整數資料類型。
- 案例 3:您使用類別變數將整數值對應至類別。
- 案例 4:您使用 JavaScript SDK 建置自訂前端應用程式。
- 案例 5:您即將達到溫存放區 1,000 個屬性名稱的限制,並同時傳送整數和非整數資料。 您可以在 Azure 入口網站中檢視以計量形式表示的屬性計數。
如果您適用以上所述的任何案例,請對您的模型進行變更。 使用建議的變更,更新變數定義中的時間序列運算式 (TSX)。 同時更新以下兩項:
- Azure 時間序列深入解析總管
- 任何使用我們 API 的自訂用戶端
根據您的 IoT 解決方案和條件約束,您可能無法看到傳送至 Azure 時間序列深入解析 Gen2 環境的資料。 如果您不確定您只擁有整數資料,還是同時擁有整數和非整數資料,您有幾個選項:
- 您可以等候功能釋出。 然後,在總管 UI 中探索原始事件,以了解是哪些屬性儲存到這兩個不同的資料行。
- 您可以事先針對所有數值標籤進行建議的變更。
- 您可以暫時將事件子集路由傳送至儲存體,以進一步了解並探索您的結構描述。
若要儲存事件,請開啟 Azure 事件中樞的事件擷取功能,或從 IoT 中樞路由傳送至 Azure Blob 儲存體。
如果您使用 IoT 中樞,請移至從內建端點讀取裝置到雲端的訊息,以了解如何存取內建端點。
注意
如果您沒有進行建議的變更,則可能會遇到中斷事件。 例如,透過查詢 API 或時間序列深入解析總管來存取受影響的時間序列深入解析變數時,會傳回 null (亦即,總管中不會顯示任何資料)。
建議變更
案例 1:使用時間序列模型變數,並只在遙測資料中傳送整數資料類型
案例 1 的建議變更與案例 2 相同。 遵循案例 2 一節中的指示來操作。
案例 2:使用時間序列模型變數,並同時在遙測資料中傳送整數和非整數類型
如果您目前傳送整數遙測資料,您的資料將會分成兩個資料行:
- propertyValue_double
- propertyValue_long
您的整數資料會寫入到 propertyValue_long。 propertyValue_double 中先前擷取 (和未來擷取) 的數值資料不會複製過去。
如果您想要跨這兩個資料行查詢 propertyValue 屬性的資料,您必須在 TSX 中使用 coalesce() 純量函式。 此函式會接受相同 DataType 的引數,並傳回引數清單中的第一個非 Null 值。 如需詳細資訊,請參閱 Azure 時間序列深入解析 Gen2 資料存取概念。
TSX 中的變數定義 - 數值
先前的變數定義:
新的變數定義:
您也可以使用 coalesce($event.propertyValue.Double, toDouble($event.propertyValue.Long)) 作為自訂的時間序列運算式。
使用 TSX 查詢 API 的內嵌變數定義 - 數值
先前的變數定義:
"PropertyValueVariable": {
"kind": "numeric",
"value": {
"tsx": "$event.propertyValue.Double"
},
"filter": null,
"aggregation": {
"tsx": "avg($value)"
}
}
新的變數定義:
"PropertyValueVariable ": {
"kind": "numeric",
"value": {
"tsx": "coalesce($event.propertyValue.Long, toLong($event.propertyValue.Double))"
},
"filter": null,
"aggregation": {
"tsx": "avg($value)"
}
}
您也可以使用 coalesce($event.propertyValue.Double, toDouble($event.propertyValue.Long)) 作為自訂的時間序列運算式。
注意
建議您在所有可能使用到這些變數的地方更新這些變數。 這些地方包括時間序列模型、已儲存的查詢和 Power BI 連接器查詢。
案例 3:使用類別變數將整數值對應至類別
如果您目前使用類別變數將整數值對應至類別,您可能會使用 toLong 函式將資料從 Double 類型轉換成 Long 類型。 和案例 1 與案例 2 一樣,您需要聯合 Double 和 LongDataType 資料行。
時間序列總管中的變數定義 - 類別
先前的變數定義:
新的變數定義:
您也可以使用 coalesce($event.propertyValue.Double, toDouble($event.propertyValue.Long)) 作為自訂的時間序列運算式。
類別變數仍然需要值為整數類型。 coalesce() 中所有引數的 DataType,在自訂時間序列運算式中必須是 Long 類型。
使用 TSX 查詢 API 的內嵌變數定義 - 類別
先前的變數定義:
"PropertyValueVariable_Long": {
"kind": "categorical",
"value": {
"tsx": "tolong($event.propertyValue.Double)"
},
"categories": [
{
"label": "Good",
"values": [0, 1, 2 ]
},
{
"label": "Bad",
"values": [ 3, 4 ]
} ],
"defaultCategory": {
"label": "Unknown"
}
}
新的變數定義:
"PropertyValueVariable_Long": {
"kind": "categorical",
"value": {
"tsx": "coalesce($event.propertyValue.Long, tolong($event.propertyValue.Double))"
},
"categories": [
{
"label": "Good",
"values": [0, 1, 2 ]
},
{
"label": "Bad",
"values": [ 3, 4 ]
} ],
"defaultCategory": {
"label": "Unknown"
}
}
類別變數仍然需要值為整數類型。 coalesce() 中所有引數的 DataType,在自訂時間序列運算式中必須是 Long 類型。
注意
建議您在所有可能使用到這些變數的地方更新這些變數。 這些地方包括時間序列模型、已儲存的查詢和 Power BI 連接器查詢。
案例 4:使用 JavaScript SDK 建置自訂前端應用程式
如果您受到案例 1 到案例 3 的影響,並建置自訂應用程式,則需要更新查詢以使用 coalesce() 函式,如先前的範例所示。
案例 5:即將達到溫存放區 1,000 個屬性的限制
如果您是具有大量屬性的溫存放區使用者,並認為這項變更會將您的環境推升到超過 1,000 個溫存放區屬性名稱的限制,請透過 Azure 入口網站提交支援票證,並提及此通訊。
下一步
- 檢視受支援資料類型的完整清單。