2017-04-07 105 views
1

我試圖讓我的頭腦圍繞在Azure應用程序洞察中編寫查詢來捕獲與使用Azure Bot Framework構建的bot的交互。Azure應用程序洞察 - 對象內的值

我有標題的表格,如timestampnamecustomDimensionscustomDimensions和內customDimensions的對象,如

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

我可以很容易地編寫查詢按名稱選擇項目例如 customEvents | where name contains "Activity"

但是我如何根據對象內的鍵來選擇,例如上面privateConversationData以內的鍵?

例如"privateConversationData": "{\"nameForm\":{\"NAME\":\"foo\",\"ICCID\":\"12121212121212121212\"}}",引用一個名爲nameForm的對話框,我將如何編寫查詢以顯示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)and isnotempty(customDimensions.privateConversationData)''然後我可以看到結果,但添加了'.formName'例如'.nameForm'結果不會返回任何記錄。同樣,第二個查詢似乎返回不包含'privateConversationData'的結果(或者它正在尋找的那個模式) –

+0

@StuartBrown,更新了查詢,現在應該工作 – yonisha

+0

謝謝!我已將第一個查詢更改爲'customEvents | extend conversationData = customDimensions [「privateConversationData」] | where timestamp> ago(20d)and isnotempty(conversationData)and conversationData contains「nameForm」 | count' - 使用'contains'而不是'starstwith'工作。第二個查詢我沒有任何運氣,但沒有匹配的記錄。如果我運行沒有'和isnotnull(dialogKind)查詢'我得到一個計數值的單列(有更多的對話框,只有一個,所以應該是多列?)。添加'和isnotnull(dialogKind)'返回沒有匹配 –