Я пытаюсь объединить данные счетчиков из двух разных типов измерений.
Первый тип меры дает точное значение счетчика в данный день.
| Id | Day | Value |
|----|-----|-------|
| 1 | 1 | 10000 |
| 2 | 15 | 10100 |
Второй тип меры дает относительное значение счетчика за период.
| Id | Period | Value |
|----|---------|-------|
| 3 | 5 - 27 | 500 |
| 4 | 11 - 21 | 300 |
Так, например, известно, что значение было 10000
в первый день, и оно было увеличено на 500
в течение 5-27
дневного периода. Учитывая это, я пытаюсь объединить и интерполировать два источника, чтобы сгенерировать один временной ряд со значением total для каждого дня:
| Day | Value |
|-----|-------|
| 1 | 10000 |
| 2 | 10010 |
| 3 | 10020 |
...
| 15 | 10100 |
...
Я много читал о временных рядах и обнаружил несколько методов нормализации и интерполяции значений первого типа меры. Тем не менее, я не могу найти методы, чтобы смешать это со вторым типом: относительные и потенциально перекрывающиеся меры за период . Я попробовал несколько ручных техник, но наткнулся на слишком много проблем.
Например, я попытался разделить значения диапазона на более мелкие порции для каждого дня (и усреднить перекрывающиеся показатели), но мне не удается согласовать это с другими показателями:
| Day | Measures | Aggregate | Total |
|-----|----------|-----------|----------|
| 1 | [1] | 10000 | 10000 |
...
| 5 | [3] | 21.74 | 10021.74 | // (500 / 23 days) = 21.74
...
| 9 | [3] | 21.74 | 10108.70 | // Higher than measure of day 15 (10100)!
Возможно ли даже достичь этого результата, учитывая характер измерений? Если да, какие методы можно использовать? Я пытаюсь добиться этого в JavaScript или непосредственно в моей базе данных PostgreSQL, но проблема здесь не связана ни с одним языком.
Спасибо