Показать первую запись по отметке времени каждой группы событий

мы собираем пользовательские события в аналитике приложений для каждого сообщения, которое пользователь отправляет чат-боту. Мероприятие называется user_message. Мы используем поле настраиваемого параметра customDimensions.conversationid, чтобы узнать, какое сообщение относится к какому разговору.

Я хочу видеть первое сообщение каждого разговора, поэтому, в основном, «самую старую» временную метку каждого события на основе идентификатора разговора.

Я пытался работать с arg_max, но не понял, как это работает.

customEvents
| extend itemType = iif (itemType == 'customEvent',itemType,"")
| where (itemType == 'customEvent')
| where name == 'User_Message'

я смог показать все пользовательские сообщения, упорядоченные по идентификатору беседы, однако он показывает мне несколько строк, и мне нужно только первое сообщение по беседе.

Модель данных:

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

РЕШЕНИЕ

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]
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обновлять:

customEvents 
| where name == "User_Message"
| summarize timestamp=min(timestamp) by myconid=tostring(customDimensions.[conversationID])
| join kind= inner (
   customEvents
   | where name == "User_Message"
   | extend myconid = tostring(customDimensions.[conversationID])
) on myconid,timestamp

Для этого вы можете использовать внутреннее соединение.

У меня нет ваших данных, поэтому в вашем случае код выглядит следующим образом (возможно, вам нужно внести небольшие изменения):

customEvents
| summarize timestamp=min(timestamp) by conversationID 
| join kind= inner (
   customEvents
) on conversationID,timestamp
| project-away conversationID1,timestamp1

Пожалуйста, дайте мне знать, если у вас возникнут дополнительные проблемы.

спасибо за ответ, но, к сожалению, это не работает.

delmy shavon 10.04.2019 10:57

Я решил проблему, решение в записи. спасибо иван ян

delmy shavon 10.04.2019 11:18

Пожалуйста. Я также нахожу ответ, он работает на моей стороне. если все в порядке, не могли бы вы принять это как ответ. Спасибо.

Ivan Yang 10.04.2019 11:31

Другие вопросы по теме