Здравствуйте! Столкнулся со следующей задачей.
Вкратце опишу.
В конфиге Logstash есть input jdbc, который выполняет select запрос в базу данных Oracle один раз в 30 минут.
На выходе я имею следующую информацию:
- case:Podgotovka perevoda po nomeru karty @version:1 tags:oracle_dwh sysdate:February 7th 2019, 13:00:00.000 status:1 @timestamp:February 7th 2019, 13:00:37.141 count(distinctm.order_number):67 _id:lI1mx2gBtOSIBx6g6k7R _type:doc _index:oracle_dwh-2019.02.07 _score: -
2)case:Podgotovka perevoda po nomeru karty @version:1 tags:oracle_dwh sysdate:February 7th 2019, 13:00:00.000 status:0 @timestamp:February 7th 2019, 13:00:37.126 count(distinctm.order_number):2 _id:mI1mx2gBtOSIBx6g6k7g _type:doc _index:oracle_dwh-2019.02.07 _score: -
Эти две строки приходят раз в полчаса (это результат выполнения select). Суть в следующем: у меня в запросе есть 80 case-ов, то есть за один запрос в одно и тоже время у меня записывается 160 строк в эластик (иногда меньше, так как некоторые кейсы могут быть пустые). Каждый кейс пишет две строки со status = 0 ( плохие операции) и status = 1 (хорошие операции).
Нужно сделать следующее:
1)Сложить параметр count(distinctm.order_number) со статусом 1 и 0 для каждого кейса.
2)Разделить count(distinctm.order_number) со статусом 0 (плохие операции) на сумму count(distinctm.order_number) полученную на предыдущем шаге для каждого кейса соответственно (результат: коэффициент успешных операций).
Подскажите, как решить подобную задачу, насколько я понимаю необходимо агрегировать
необходимые строки, а затем произвести вычисления. Буду рад любой помощи.