|
Адаптивная группировка событий по времени и интервалу
|
|||
---|---|---|---|
#18+
Есть такая задача, пока теоретическая. Есть таблица с событиями, у каждого события есть дата и время (или таймштамп). События, интервал между которыми менее N1=10 секунд, безусловно группируются в один блок. События, интервал между которыми более N2=600 секунд, безусловно начинают новую группу (новый блок). А вот события, интервал между которыми от 10 до 600 секунд, группируются или начинают новый блок в зависимости от предыдущих интервалов: если текущий интервал не более, чем на 15% больше максимального интервала текущей группы, то текущее событие включается в текущую группу (и в текущей группе обновляется максимум); если текущий интервал не менее, чем на 15% меньше среднего интервала текущей группы, то текущий интервал начинает новую группу. В идеале нужно минимизировать число групп/блоков, насколько это возможно (исключить отдельные группы/блоки из одиночных событий). У меня это уведомления о различных изменениях, но можно рассматривать задачу, как группировку в чате или новостной ленте. В принципе я примерно представляю себе, как сделать подобную группировку (case из четырех или пяти проверок). Но насколько ресурсоемкой будет подобная группировка? Или лучше перенести эту задачу на клиента? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 16:31 |
|
Адаптивная группировка событий по времени и интервалу
|
|||
---|---|---|---|
#18+
Облизывайся - pattern matching синтаксически легко бы решил задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 18:04 |
|
Адаптивная группировка событий по времени и интервалу
|
|||
---|---|---|---|
#18+
Верю. Но в принципе и на 10g такую группировку я примерно представляю себе как сделать, пусть это будет не так красиво и с трехуровневыми вложениями. Или подобные задачи все же лучше делать на клиенте? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 15:06 |
|
Адаптивная группировка событий по времени и интервалу
|
|||
---|---|---|---|
#18+
Alibek B. на 10g ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 15:32 |
|
Адаптивная группировка событий по времени и интервалу
|
|||
---|---|---|---|
#18+
Alibek B. если текущий интервал не более, чем на 15% больше максимального интервала текущей группы, то текущее событие включается в текущую группу (и в текущей группе обновляется максимум); если текущий интервал не менее, чем на 15% меньше среднего интервала текущей группы, то текущий интервал начинает новую группу Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46.
Alibek B. Верю. Но в принципе и на 10g такую группировку я примерно представляю себе как сделать, пусть это будет не так красиво и с трехуровневыми вложениями. Или подобные задачи все же лучше делать на клиенте? В процессе должно прийти понимание что для получения максимального/минимального (или среднего) в группе аналитикой надо знать где группа начинается. Соответственно из SQL инструментов в 10g остаётся итеративная моделька. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 16:19 |
|
Адаптивная группировка событий по времени и интервалу
|
|||
---|---|---|---|
#18+
Для ТС не актуально, но fix на всякий случай. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2021, 17:39 |
|
|
start [/forum/topic.php?fid=52&fpage=28&tid=1880536]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 141ms |
0 / 0 |