新しい環境での JSON フラット化とエスケープ規則に関する今後の変更

注意

Time Series Insights (TSI) サービスは、2025 年 3 月以降はサポートされなくなります。 できるだけ早く既存の TSI 環境を代替ソリューションに移行することを検討してください。 サポートの終了と移行の詳細については、こちらのドキュメントを参照してください。

重要

これらの変更は、"新しく作成された" Microsoft Azure Time Series Insights Gen2 環境にのみ該当します。 この変更は、Gen1 環境には該当しません。

Azure Time Series Insights Gen2 環境では、特定の一連の名前付け規則に従って、ストレージ列が動的に作成されます。 イベントが取り込まれると、Time Series Insights により JSON ペイロードとプロパティ名に一連の規則が適用されます。 JSON データのフラット化および格納方法の変更は、新しい Azure Time Series Insights Gen2 環境に、2020 年 7 月から適用されています。 この変更は、次のような場合に影響を及ぼします。

  • お使いの JSON ペイロードに入れ子になったオブジェクトが含まれている。
  • お使いの JSON ペイロードに配列が含まれている。
  • JSON プロパティ名に、[\.' の 4 つの特殊文字のいずれかが使用されている。
  • 1 つ以上のお使いの Time Series (TS) ID プロパティが入れ子になったオブジェクト内にある。

新しい環境を作成し、お使いのイベント ペイロードに上記のケースが 1 つ以上該当する場合、お使いのデータは異なる方法でフラット化され、格納されます。 次の表に変更をまとめています。

現在の規則 新しい規則 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 ID または timestamp プロパティのいずれも存在しない場合、オブジェクトの配列全体は動的な型として格納されます。 "values": [{"foo" : 140}, {"bar" : 149}] values_foo_long | values_bar_long values_dynamic

TS ID または timestamp プロパティがオブジェクト内で入れ子になっている場合

新しいデプロイでは、新しい取り込み規則を使用する必要があります。 たとえば、お使いの TS ID が telemetry_tagId である場合は、Azure Resource Manager テンプレートまたは自動展開スクリプトをすべて更新して、telemetry.tagId を環境の TS ID として構成する必要があります。 入れ子になった JSON のイベント ソースのタイムスタンプでも、この変更を行う必要があります。

ペイロードに入れ子になった JSON または特殊文字が含まれており、時系列モデル変数式の作成が自動化されている場合:

新しい取り込み規則が使用されるよう、TypesBatchPut を実行するお使いのクライアント コードを更新します。 たとえば、前の タイム シリーズ式を、次のいずれかのオプションに更新します。

  • "value": {"tsx": "$event.series.value.Double"}
  • "value": {"tsx": "$event['series']['value'].Double"}

次の手順