В нашем проекте нам приходится периодически вычислять агрегаты и дальнейшие расчеты на основе полученных входных данных.
Одним из частых требований является вычисление разницы во времени между определенными строками в нашем потоке входных данных.
Например, это мой входной поток данных:
Отметка времени Значение события
21.05.2017 11:33 e1 17
21.05.2017 11:37 e2 18
21.05.2017 11:38 e3 18
2017 -05-21 11:39 e1 19
2017-05-21 11:42 e2 19
Теперь я хочу рассчитать все промежутки времени между событиями e2 и последним полученным событием e1 (упорядоченные по отметке времени).
я ожидаю, что результат будет: 3 (минуты) 4 (минуты)
Аналогичным требованием было бы вычислить временные промежутки между событиями одного типа (т.е. все различия между событиями e1), где я ожидал бы этот результат: 6 (минуты)
Мои попытки до сих пор:
Такого рода аналитика может быть довольно легко достигнута с помощью функции LAG в сочетании с предложением WHEN, но, к сожалению, предложение WHEN отсутствует в U-SQL. Если бы это был T-SQL, это также можно было бы решить с помощью подвыборки в предложении SELECT оператора, но, к сожалению, это также невозможно в U-SQL.
Есть ли у вас какие-либо предложения или примеры сценариев, как решить эту проблему? Большое спасибо за Вашу помощь!