#timescaledb
Вопрос:
Я использую timescaledb версии 2.4.1 на postgresql 13.4
Я хочу интерполировать ежедневные значения измерителя электропроводности с помощью интерполяции (в этом примере я пропускаю много дней). Я обычно получаю ежедневные значения в полночь (00:00:00 00), и если значения не существует, мне нужно интерполированное значение. Входные данные являются:
2019-11-04 09:00:02 00 10796491 2020-01-28 10:00:00 00 10807703 2020-01-28 11:00:00 00 10818215 2020-01-28 12:00:00 00 10839014 ... ... ... 2020-01-31 22:00:00 00 12554884 2020-01-31 23:00:00 00 12574581 2020-02-01 00:00:00 00 12593773
Использование запроса:
select time_bucket_gapfill('1 day',dtstamp) as stamp, interpolate(min(value), (select (dtstamp,value) from timedata td where td.dtstamp lt; '2020-01-01' order by td.dtstamp desc limit 1), (select (dtstamp,value) from timedata td where td.dtstamp gt; '2020-02-01' order by td.dtstamp limit 1)) as val from timedata where dtstamp gt;= '2020-01-01' AND dtstamp lt;= '2020-02-01' group by stamp
Я получаю значения:
2020-01-01 00:00:00 00 10804125.758253396 2020-01-02 00:00:00 00 10804258.248688456 2020-01-03 00:00:00 00 10804390.739123514 ... ... ... 2020-01-27 00:00:00 00 10807570.509564942 2020-01-28 00:00:00 00 10807703 2020-01-29 00:00:00 00 11072810 2020-01-30 00:00:00 00 11559716 2020-01-31 00:00:00 00 12062945 2020-02-01 00:00:00 00 12593773
Значение 2020-01-28 00:00:00 00 совпадает со значением 2020-01-23 10:00:00 00, указывающим на то, что интерполяция не производилась. Точное вычисление начального значения в 2020-01-01 00:00:00 00 с даты до и после также не совпадает с результатом по шкале времени. Похоже, что все значения были интерполированы в 10:00, но отображаются как 00:00.
Неверен ли запрос? Есть ли способ сделать то, что мне нужно (ежедневные значения в 00:00 — интерполируются, если их нет)?