Application Insights Analyticsに、カスタムディメンションのプロパティとして動的オブジェクトを持ついくつかのデータがあります。例えば:
| timestamp | name | customDimensions | etc |
|-------------------------|---------|----------------------------------|-----|
| 2017-09-11T19:56:20.000 | Spinner | { | ... |
MyCustomDimension: "hi"
Properties:
context: "ABC"
userMessage: "Some other"
}
それは理にかなっていますか?つまり、customDimensions内のキーと値のペアです。
結果の適切な列になるようにcontext
プロパティを表示しようとしています。期待されるのは:
| timestamp | name | customDimensions | context| etc |
|-------------------------|---------|----------------------------------|--------|-----|
| 2017-09-11T19:56:20.000 | Spinner | { | ABC | ...
MyCustomDimension: "hi"
Properties:
context: "ABC"
userMessage: "Some other"
}
私はこれを試しました:
customEvents | where name == "Spinner" | extend Context = customDimensions.Properties["context"]
この:
customEvents | where name == "Spinner" | extend Context = customDimensions.Properties.context
しかし、どちらも機能していないようです。末尾に「Context」という名前の列が表示されますが、列は空です-値がありません。
何か案は?
編集:
データの形式を明確にするための画像を追加しました:
動作するように編集:
customEvents
| where name == "Spinner"
| extend Properties = todynamic(tostring(customDimensions.Properties))
| extend Context = Properties.context
あなたが期待するものを得るためにここに追加のtostring
とtodynamic
が必要です(そしてi期待される!)
私が与えられた説明:
動的フィールドは、キー/値アクセスのupper/outerレベルを「約束」します(これは、customDimensions.Propertiesへのアクセス方法です)。
そのJSONの内部構造へのアクセスは、customDimensions.Propertiesコンテンツの正確な形式に依存します。それ自体がjsonである必要はありません。それがよく構造化されたjsonのように見えたとしても、正確にフォーマットされたjsonではない単なる文字列である可能性があります。
そのため、基本的に、ネストされたコンテンツをjsonに無限に変換しようとして失敗する可能性があるので、デフォルトでは、dynamic/jsonブロック内の文字列を解析しようとしません。
まだ[extratostring
は必要ありません。todynamic
はすでに両方の文字列を許可しているためです。動的に有効なので、クエリを所有するチームがそのステップを改善できるかどうかを確認しています。
どうもありがとう..ジョンからの答えをさらに詳しく説明します。カスタムイベントを使用してエンドポイントの期間をグラフ化する必要がありました。このクエリは、グラフのY軸として期間を指定できるようにしました。
customEvents
| extend Properties = todynamic(tostring(customDimensions.Properties))
| extend duration = todouble(todecimal(Properties.duration))
| project timestamp, name, duration