Пользовательские выходные данные Azure Stream Analytics с оператором CASE

У меня проблема с подсчетом пользователей каждой зоны, каждый пользователь отправит их локаль на сервер. Может ли кто-нибудь помочь мне в этом, спасибо. Аналитика выходного потока должна быть такой:

{
   "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"}]

person vthanhduc    schedule 05.11.2020    source источник


Ответы (1)


Я пробовал сервальный SQL-запрос, но не могу выполнить ваши требования. Думаю, это невозможно, потому что вам нужна группа по sessionId, но нет Агрегатные функции могут получить этот формат.

"data": {
        "North America": 0,
        "South America": 0,
        "Europe": 0,
        "Russia": 0,
        "Africa": 1,
        "India": 0,
        "China": 0,
        "Oceania": 0, 
   }
person Steve Zhao    schedule 13.11.2020
comment
Привет, Стив, я нашел решение для этого, я использую функции UDA (определяемые пользователем агрегированные функции) для достижения своего формата данных. - person vthanhduc; 16.11.2020