#azure-stream-analytics #stream-analytics
#azure-stream-analytics #поток-аналитика
Вопрос:
У меня проблема с подсчетом пользователей каждой зоны, каждый пользователь отправляет их на сервер. Может кто-нибудь помочь мне добиться этого, спасибо. Аналитика выходного потока должна быть такой:
{
"sessionId": "sessionId1", -->group by sessionId
"data": {
"North America": 0,
"South America": 0,
"Europe": 0,
"Russia": 1,
"Africa": 2,
"India": 0,
"China": 2,
"Oceania": 0,
}
},
{
"sessionId": "sessionId2", -->group by sessionId
"data": {
"North America": 0,
"South America": 0,
"Europe": 0,
"Russia": 0,
"Africa": 1,
"India": 0,
"China": 0,
"Oceania": 0,
}
}
входные данные:
[{"sessionId":"Session1","deviceId":"deviceTest1","locale":"Russia"},{"sessionId":"Session1","deviceId":"deviceTest2","locale":"China"},{"sessionId":"Session1","deviceId":"deviceTest3","locale":"China"},{"sessionId":"Session1","deviceId":"deviceTest4","locale":"Africa"},{"sessionId":"Session1","deviceId":"deviceTest5","locale":"Africa"},{"sessionId":"Session2","deviceId":"deviceTest6","locale":"Africa"}]
Ответ №1:
Я пробовал запрос serval SQL, но не могу выполнить ваше требование. Я думаю, что это невозможно, потому что вам нужна group by sessionId
, но агрегатные функции не могут получить этот формат.
"data": {
"North America": 0,
"South America": 0,
"Europe": 0,
"Russia": 0,
"Africa": 1,
"India": 0,
"China": 0,
"Oceania": 0,
}
Комментарии:
1. Привет, Стив, я нашел решение для этого, я использую функции UDA (определяемые пользователем агрегированные функции) для достижения моего формата данных.