即將對新環境的 JSON 壓平和逸出規則進行變更
注意
時間序列深入解析服務將於 2024 年 7 月 7 日淘汰。 請考慮儘快將現有的環境移轉至替代解決方案。 如需關於廢棄和遷移的詳細資訊,請瀏覽我們的 文件。
重要
這些變更只會套用至 新建立 Microsoft Azure 時間序列深入解析 Gen2 環境。 這些變更不適用於 Gen1 環境。
您的 Azure 時間序列見解 Gen2 環境會根據一組特定的命名慣例,動態建立您的儲存欄位。 當事件被接收時,時間序列洞察會將一組規則應用於 JSON 負載和屬性名稱。 2020 年 7 月,Azure Time Series Insights Gen2 環境的 JSON 資料扁平化和儲存方式的變更開始生效。 這項變更會在下列情況下影響您:
- 您的 JSON 承載包含巢狀物件。
- 您的 JSON 承載包含陣列。
- 您會在 JSON 屬性名稱中使用下列四個特殊字元中的任何一個:
[
\
.
'
- 時間序列 (TS) 識別碼屬性的一或多個位於巢狀物件內。
如果您建立新的環境,且其中一或多個案例適用於您的事件承載,您的數據將以不同的方式扁平化並儲存。 下表摘要說明變更:
目前規則 | 新規則 | 範例 JSON | 先前的欄名稱 | 新欄位名稱 |
---|---|---|---|---|
巢狀 JSON 會使用底線做為分隔符來扁平化。 | 巢狀 JSON 會使用句點作為分隔符來扁平化。 | {"series" : { "value" : 19.338 }} |
series_value_double |
series.value_double |
特殊字元未被轉義。 | JSON 屬性名稱,包含特殊字元 . [ \ 和 ' 會使用 [' 和 '] 逸出。 在 [' 和 '] 內,單引號和反斜杠還有額外的逸出。 單引號會表示為 \' ,而反斜線則表示為 \\ 。 |
"Foo's Law Value": "17.139999389648" |
Foo's Law Value_double |
['Foo\'s Law Value']_double |
基本類型的陣列會儲存為字串。 | 基本類型的陣列會儲存為動態類型。 | "values": [154, 149, 147] |
values_string |
values_dynamic |
陣列的物件會被扁平化,從而產生多個事件。 | 如果陣列中的物件沒有 TS 識別碼或時間戳屬性,則對象的陣列會以動態類型的形式儲存整個。 | "values": [{"foo" : 140}, {"bar" : 149}] |
values_foo_long | values_bar_long |
values_dynamic |
建議針對新環境的變更
如果您的 TS ID 和/或時間戳記屬性嵌套在物件中
任何新的部署都需要符合新的擷取規則。 例如,如果您的 TS 識別碼 telemetry_tagId
,您必須更新任何 Azure Resource Manager 範本或自動化部署腳本,將 telemetry.tagId
設定為環境 TS 識別符。 針對巢狀 JSON 中的事件來源時間戳,您也需要這項變更。
如果您的數據載荷包含巢狀的 JSON 或特殊字元,並且您自動化撰寫 時間序列模型 變數表達式
請更新執行 TypesBatchPut 的客戶端程式碼,以配合新的匯入規則。 例如,您應該將先前 時間序列表達式"value": {"tsx": "$event.series_value.Double"}
更新為下列其中一個選項:
"value": {"tsx": "$event.series.value.Double"}
"value": {"tsx": "$event['series']['value'].Double"}
後續步驟
瞭解如何使用 時間序列查詢 API查詢數據。
深入瞭解
新的時間序列表達式語法。