2017-04-07 14 views
1

私は、Azureボットフレームワークを使用して構築されたボットとのやりとりをキャプチャしているAzure Application Insightsでクエリを書くことに頭を抱えようとしています。Azure Application Insights - オブジェクト内の値

私は見出しを持つテーブルを持っているようなtimestampnamecustomDimensionscustomDimensionscustomDimensions内には、

{ "conversationData": "{}", "privateConversationData": "{\"nameForm\":{\"NAME\":\"foo\",\"ICCID\":\"12121212121212121212\"}}", "userData": "{}", "conversationId": "878fhiee1k33j5ci", "userId": "default-user", "metrics": "92.25833" }

Iは、例えば名前で項目を選択するために容易にクエリを書き込むことができるようなオブジェクトである customEvents | where name contains "Activity"

上記のprivateConversationDataのようなオブジェクト内のキーに基づいてどのように選択すればよいですか?

たとえば、"privateConversationData": "{\"nameForm\":{\"NAME\":\"foo\",\"ICCID\":\"12121212121212121212\"}}",は、nameFormという1つのダイアログを参照していますが、nameFormが使用された回数を表示するクエリを作成するにはどうすればよいですか?または、他の種類のダイアログ(nameForm、fooForm、barFormなど)だけでなく、それらが使用された回数のクエリも含まれていますか?

何か助けてくれてありがとう!

答えて

1

'customDimensions'プロパティは動的なタイプなので、JSONドキュメントとして扱うことができます。例えば

- nameFormが最後の日に使用された回数を取得する:

customEvents 
| extend conversationData = customDimensions["privateConversationData"] 
| where timestamp > ago(1d) and isnotempty(conversationData) and conversationData contains "{\\\"nameForm\\\"" 
| count 

が異なるダイアログがparse operatorを使用してcustomDimensions JSONドキュメントを解析することによってトリッキーが、可能になります数えるガイド:

customEvents 
| where timestamp > ago(1d) 
| parse customDimensions with * "privateConversationData\": \"{\\\"" dialogKind "\\\":{\\\"NAME\\\"" * 
| where isnotempty(dialogKind) and isnotnull(dialogKind) 
| summarize count() by dialogKind 

言語の詳細については、Analytics Referenceをご覧ください。

+0

ありがとう@yonisha。これは有望ですが、現時点ではまあまあです。たとえば、最初のクエリは結果を返しません。しかし、私が 'customEvents | where timestamp> ago(20d)とisnotempty(customDimensions.privateConversationData) 'と表示されますが、結果は表示されますが、「。 '.nameForm'を結果に返すと、レコードは返されません。同様に、2番目のクエリは、 'privateConversationData'(またはそれが探しているパターン)を含まない結果を返すようです。 –

+0

@StuartBrown、クエリを更新しました。今すぐに動作します – yonisha

+0

ありがとう!最初のクエリを 'customEvents に変更しました。拡張conversationData = customDimensions ["privateConversationData"] |ここで、timestamp> ago(20d)およびisnotempty(conversationData)です。conversationDataには「nameForm」が含まれています。 | count' - 'starstwith'ではなく' contains'を使って動作します。しかし、私は2番目のクエリで運がないが、一致するレコードはない。 'and isnotnull(dialogKind)'を使わないでクエリを実行すると、カウント値を持つ単一の列が得られます。複数の列でなければならないより多くのダイアログがあります。 'and isnotnull(dialogKind)'を追加すると、 –

関連する問題