Как посчитать разность между датами по графе исходя из значений другой графы?

0 голосов
Александр Белоус в категории Как сделать...

Добрый день. Подскажите, возможен ли расчет длительности нескольких временных периодов по следующим параметрам:

1. От даты возникновения значения > 0 до перехода в значение = 0 (выделено синим);

2. От даты возникновения следующего значения > 0 до перехода в значение = 0 с учетом того, что интервал может содержать пустые значения (выделено желтым);

3. Следующий интервал (выделено зеленым), которые идет после выхода в 0 желтого интевала.

На выходе нужно получить 3 интервала длиной 1, 8 и 3 дня соответсвенно.

Даты могут идти непоследовательно.

Спасибо.

Ответ: 1 шт.

+1 голос
stanislav levin

Добрый день. Вашу задачу можно решить, например, следующим образом:

1. Отсортировать данные по датам от старых к новым.

2. В узле Калькулятор добавить следующие выражения:

* flag: if(value = 0 or rownum() = RowCount() - 1, 0, if(data("flag", rownum() - 1) = 0 and isnull(value), 0, 1))
* group: if(rownum() = 0, flag, if(data("flag", rownum() - 1) = 0 and data("flag", rownum()) = 1, data("group", rownum() - 1) + 1, data("group", rownum() - 1)))
cumulative_sum: CumulativeSum("flag", "group") - Поле с конечным результатом

где поле date - дата, value - значение.

В зависимости от того, какие стоят задачи (какие могут быть ещё правила, по которым определяются временные периоды; как дальше будут использоваться полученные результаты и т.д.), можно найти другое или более оптимальное решение.

Александр Белоус
Спасибо большое!
...