Округление временных меток без влияния на характер связанных функций - PullRequest
0 голосов
/ 07 января 2019
> select midprice from TSLA_0p5s limit 100
name: TSLA_0p5s
time                midprice
----                --------
2015-07-15T09:00:00Z        267.1
2015-07-15T09:00:00.499500032Z  267.1
2015-07-15T09:00:01Z        267.1
2015-07-15T09:00:01.499500032Z  267.1
2015-07-15T09:00:02Z        267.1
2015-07-15T09:00:02.499500032Z  267.1
2015-07-15T09:00:03Z        267.1
2015-07-15T09:00:03.499500032Z  267.1
2015-07-15T09:00:04Z        267.1
2015-07-15T09:00:04.499500032Z  267.1
2015-07-15T09:00:05Z        267.1
2015-07-15T09:00:05.499500032Z  267.1
2015-07-15T09:00:06Z        267.1
2015-07-15T09:00:06.499500032Z  267.1
2015-07-15T09:00:07Z        267.1
2015-07-15T09:00:07.499500032Z  267.1
2015-07-15T09:00:08Z        267.1
2015-07-15T09:00:08.499500032Z  267.1
2015-07-15T09:00:09Z        267.1
2015-07-15T09:00:09.499500032Z  267.1

В приведенном выше примере из базы данных вы можете видеть, что различия между временными метками не являются регулярными. Когда я записывал данные в базу данных с помощью [influenxdb-python] [1], timedelta была уникальной и была установлена ​​на 0,5 секунды. Здесь вы можете заметить, что

2015-07-15T09: 00: 00.499500032Z - 2015-07-15T09: 00: 00Z = 0,49950032 секунды (**)

и

2015-07-15T09: 00: 01Z - 2015-07-15T09: 00: 00.499500032Z = 0,50049968 второй (***)

Если я попытаюсь group by, временные метки теперь исправны, но это влияет на качество функций

> select mean(midprice) from TSLA_0p5s where time >= '2015-07-15T09:30:00Z' AND time <= '2015-07-15T10:30:00Z'  group by time(500ms) fill(0) limit 100
name: TSLA_0p5s
time            mean
----            ----
2015-07-15T09:30:00Z    267.01
2015-07-15T09:30:00.5Z  0
2015-07-15T09:30:01Z    266.895
2015-07-15T09:30:01.5Z  0
2015-07-15T09:30:02Z    266.7725
2015-07-15T09:30:02.5Z  0
2015-07-15T09:30:03Z    266.7675
2015-07-15T09:30:03.5Z  0
2015-07-15T09:30:04Z    266.765
2015-07-15T09:30:04.5Z  0
2015-07-15T09:30:05Z    266.765
2015-07-15T09:30:05.5Z  0
2015-07-15T09:30:06Z    266.765
2015-07-15T09:30:06.5Z  0
2015-07-15T09:30:07Z    266.765
2015-07-15T09:30:07.5Z  0
2015-07-15T09:30:08Z    266.765
2015-07-15T09:30:08.5Z  0
2015-07-15T09:30:09Z    266.765
2015-07-15T09:30:09.5Z  0
2015-07-15T09:30:10Z    266.765
2015-07-15T09:30:10.5Z  0
2015-07-15T09:30:11Z    266.765
2015-07-15T09:30:11.5Z  0
2015-07-15T09:30:12Z    266.765
2015-07-15T09:30:12.5Z  0
2015-07-15T09:30:13Z    266.76
2015-07-15T09:30:13.5Z  0
2015-07-15T09:30:14Z    266.7475

Я ожидаю округлить отметку времени до 0.5 вместо небольшого отклонения с 0.49950032 и 0.50049968. Я, конечно, могу округлить с group by, но это, безусловно, повлияет на характер других функций, связанных с каждой отметкой времени.

Есть ли способ округлить метки времени до десятых, не влияя на функции?

...