мы собираем пользовательские события в обзорах приложений для каждого сообщения, которое пользователь отправляет в чат-бота. Событие называется user_message
.
Мы используем настраиваемое поле измерения customDimensions.conversationid
, чтобы узнать, какое сообщение относится к какому разговору.
Я хочу видеть первое сообщение каждого разговора, поэтому, в основном, «самую старую» временную метку каждого события на основе идентификатора разговора.
Я пытался работать с arg_max, но я не понял, как это работает.
customEvents
| extend itemType = iif(itemType == 'customEvent',itemType,"")
| where (itemType == 'customEvent')
| where name == 'User_Message'
Мне удалось показать все пользовательские сообщения, упорядоченные по элементу разговора, однако он показывает мне несколько строк, и мне нужно только первое сообщение при разговоре.
DataModel:
timestamp [UTC] 2019-04-05T13:24:10.359Z
name User_Message
itemType customEvent
customDimensions
confidence N/A
conversationId BNu0SqC5RfA1S0lZmdxxxxx
intent N/A
userMessage user text
operation_Name POST /api/messages
operation_Id xxxxxxxa5d422eadebfebb2
operation_ParentId xxxxx545a5d422eadebfebb2.99811380_13.f033f887_
application_Version 1.0.0
client_Type PC
client_OS Windows_NT 10.0.14393
client_IP 0.0.0.0
client_City Amsterdam
client_StateOrProvince North Holland
client_CountryOrRegion Netherlands
cloud_RoleName Web
cloud_RoleInstance XXXXXXXFF74D594
appId ccccccc-8b24-41bb-a02a-1cb101da84e5
appName bot-XXXXX
iKey XXXXXX
sdkVersion node:XX
itemId XXXXXXXX-57a6-11e9-a5a7-ebc91e7cf64e
itemCount 1
SOLUION
customEvents
| extend itemType = iif(itemType == 'customEvent',itemType,"")
| where (itemType == 'customEvent')
| where (name=='User_Message')
| summarize list=makeset(customDimensions.userMessage) by
tostring(customDimensions.conversationId)
| mv-expand firstMessage=list[0]