Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将分钟数据划分为包含Timescaledb(PostgreSQL扩展名)中每个月的表_Postgresql_Time Series_Timescaledb - Fatal编程技术网

如何将分钟数据划分为包含Timescaledb(PostgreSQL扩展名)中每个月的表

如何将分钟数据划分为包含Timescaledb(PostgreSQL扩展名)中每个月的表,postgresql,time-series,timescaledb,Postgresql,Time Series,Timescaledb,我是timescaledb的新手,我想为表中的每种股票存储一分钟ohlcv刻度。一只股票每天产生1440个滴答声,一个月产生43200个滴答声。我有100个资产,每个月我都要存储它们的刻度,基本上每隔30天左右对表进行划分,这样我就不必为这个划分构建复杂的逻辑。关于如何使用timescale DB实现这一点的任何建议 目前,我的做法是 获取传入的勾号(例如时间戳1535090420) 将其时间戳四舍五入到最接近的30天周期(1535090420/(86400*30))=592.24167438

我是timescaledb的新手,我想为表中的每种股票存储一分钟ohlcv刻度。一只股票每天产生1440个滴答声,一个月产生43200个滴答声。我有100个资产,每个月我都要存储它们的刻度,基本上每隔30天左右对表进行划分,这样我就不必为这个划分构建复杂的逻辑。关于如何使用timescale DB实现这一点的任何建议

目前,我的做法是

  • 获取传入的勾号(例如时间戳1535090420
  • 将其时间戳四舍五入到最接近的30天周期(1535090420/(86400*30))=592.241674383
  • 将该数字四舍五入到592,然后乘以区间,得到1534464000,这是最接近的30天存储桶,所有刻度都应该存储在该存储桶中,因此我创建了一个名为OHLC_1534464000的表(如果不存在),并将刻度添加到该表中
  • 有没有更好的办法

除非我遗漏了什么,否则听起来您只是想要一个按30天间隔划分的表,它将根据时间戳自动知道将传入数据放入哪个表中。这正是TimescaleDB的功能

您可以使用以下语法创建表:

create_hypertable('ohlc','timestamp',chunk_time_interval=>interval'30天');


这将创建30天的块(只是引擎盖下的Postgres表),并根据时间戳将每个勾号透明地放置在适当的块中。一旦超过当前30天周期的刻度出现,它将自动创建一个新区块。您只需在主表(
ohlc
)上插入和查询,就像它是一个Postgres表一样

天哪!我希望我能投你10票!非常感谢你,伙计