Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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/ssl/3.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
Postgresql 如何定义块的起始范围_Postgresql_Timescaledb - Fatal编程技术网

Postgresql 如何定义块的起始范围

Postgresql 如何定义块的起始范围,postgresql,timescaledb,Postgresql,Timescaledb,我创建了一个时间值定义为整数(unix历元时间)的表。我将chunk\u time\u interval设置为604800,以便每周创建一次chunk。我希望在插入第一个条目一周后创建第二个块。在我的例子中,第二个区块仅在2天后创建。如何确定第一个卡盘的起始范围。在我的情况下,如果我给每周的持续时间,它将是不同的,如果我给10天的持续时间,它将是不同的,虽然第一次进入时间是相同的,在这两种情况下。我正在使用Postgres 11.6版进行测试 如何确定第一个卡盘的起始范围 时间列上的区块范围是根

我创建了一个时间值定义为整数(unix历元时间)的表。我将
chunk\u time\u interval
设置为604800,以便每周创建一次chunk。我希望在插入第一个条目一周后创建第二个块。在我的例子中,第二个区块仅在2天后创建。如何确定第一个卡盘的起始范围。在我的情况下,如果我给每周的持续时间,它将是不同的,如果我给10天的持续时间,它将是不同的,虽然第一次进入时间是相同的,在这两种情况下。我正在使用Postgres 11.6版进行测试

如何确定第一个卡盘的起始范围

时间列上的区块范围是根据区块时间间隔计算的,因此范围开始与绝对零对齐。因此,块的开始时间是最接近的时间,它低于插入值,并且可以除以块间隔。计算方法如下:

range\u start=(value/dim->fd.interval\u length)*dim->fd.interval\u length;
因此,具有相同数据但不同时间间隔(例如7天或10天)的块的开始是不同的

这也意味着第一个块可能比其他块小

请注意,插入数据的顺序通常没有严格保证。因此,如果应用程序在数据源和数据库之间没有确保按顺序写入数据的层,那么第二次插入可能比第一次插入稍早一些(考虑到不同传感器的网络延迟)

我希望在插入第一个条目一周后创建第二个块

TimescaleDB不提供指定区块开始时间的功能,因为它计算区块开始时间。您的请求是特定于应用程序的,您可以通过在插入时对每一行应用时间偏移量,然后在读取时对每一行应用时间偏移量来实现,但这可能不值得这么复杂。你能更新你的原始版本并解释为什么它很重要吗?也可以向TimescaleDB提出新功能

如何确定第一个卡盘的起始范围

时间列上的区块范围是根据区块时间间隔计算的,因此范围开始与绝对零对齐。因此,块的开始时间是最接近的时间,它低于插入值,并且可以除以块间隔。计算方法如下:

range\u start=(value/dim->fd.interval\u length)*dim->fd.interval\u length;
因此,具有相同数据但不同时间间隔(例如7天或10天)的块的开始是不同的

这也意味着第一个块可能比其他块小

请注意,插入数据的顺序通常没有严格保证。因此,如果应用程序在数据源和数据库之间没有确保按顺序写入数据的层,那么第二次插入可能比第一次插入稍早一些(考虑到不同传感器的网络延迟)

我希望在插入第一个条目一周后创建第二个块


TimescaleDB不提供指定区块开始时间的功能,因为它计算区块开始时间。您的请求是特定于应用程序的,您可以通过在插入时对每一行应用时间偏移量,然后在读取时对每一行应用时间偏移量来实现,但这可能不值得这么复杂。你能更新你的原始版本并解释为什么它很重要吗?您还可以向TimescaleDB提出新功能。

您好,欢迎使用StackOverflow!不幸的是,我不太清楚你在问什么,你能把问题修改得更清楚一点吗?@Mayank Kandari你能报告第三个区块是什么时候创建的吗?是9天后吗?我创建了一个表“timeseries”,其中包含key(整数)、time(整数)和value(整数)字段。将chunk_time_interval设置为604800并插入第一行(1、x和100)。预期的行为是第一个块应该包含范围内的值[x和x+604800)但当我查询SELECT chunk_表时,chunk_relation_size_pretty的范围显示开始范围远小于x。创建第一个chunk后,对于第二个chunk Forwards,范围值是确定的。我的问题是如何为第一个chunk定义开始范围?您好,欢迎来到StackOverflow!不幸的是,我不太清楚你想问的是,你能把问题修改得更清楚些吗?@Mayank Kandari你能报告第三个区块是什么时候创建的吗?是在9天后吗?我创建了一个“timeseries”表,其中包含key(整数)、time(整数)和value(整数)字段。将chunk_time_interval设置为604800,并插入第一行(1、x和100)。预期的行为是,第一个区块应该包含[x和x+604800]范围内的值,但当我查询SELECT chunk_表时,从chunk_relation_size_开始的范围显示的起始范围远小于x。创建第一个区块后,对于第二个区块,范围值是确定的。我的问题是如何为第一个区块定义起始范围?