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

Note

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

重要

これらの変更は、"新しく作成された" 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"}
  • "value": {"tsx": "$event['series']['value'].Double"}

次のステップ