Коллеги, добрый день.
Может кто-то сталкивался с подобной задачей и может помочь?
Есть таблица с временными рядами, столбцы:
-ID клиента
-дата
-сумма (могут быть положительные и отрицательные значения)
Вопрос: необходимо найти последнюю дату по каждому ID клиента, когда накопленный итог поля Сумма меняет знак с "-" на "+".
Есть какие-то варианты обработчиков в Deductor?
Грубо говоря, нужен обработчик, который добавит расчетное поле в таблицу, которое будет считать накопленный итог поля Сумма из учета ограничений - совпадение по ID и дата не позже даты для текущей записи.
Добрый день! Вашу задачу можно решить, используя стандартные обработчики.
1. Сделать сортировку по полям «Id клиента» и «дата».
2. Используя обработчик "калькулятор", посчитать накопительную сумму по полю «сумма» с группировкой по полю «Id клиента».
3. Используя обработчик "калькулятор", отследить моменты, в которые происходит смена знака накопительного итога суммы с "-" на "+". Для этого нужно сравнить предыдущее значение поля с накопленной суммой с текущим.
4. Выбрать только записи, полученные на предыдущем этапе и сгруппировать данные, использовав поле «Id клиента» как измерение, а поле «дата» как факт (вариант агрегации – максимальное значение).
Сергей, тогда вопрос какую функцию использовать в "калькуляторе"?
Для расчета накопительной суммы – CumulativeSum. Для выявления моментов смены знака можно использовать функцию data, где в качестве текущего номера строки использовать rownum, а для предыдущего (rownum-1). Как альтернативу можно использовать простые логические условия.