Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/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
Postgresql 所有时间上的时间尺度连续聚合_Postgresql_Timescaledb - Fatal编程技术网

Postgresql 所有时间上的时间尺度连续聚合

Postgresql 所有时间上的时间尺度连续聚合,postgresql,timescaledb,Postgresql,Timescaledb,我想问,如果我想从所有时间获得聚合值,而不是特定的时间限制,那么连续聚合是否是最佳解决方案 这是我起草的问题 CREATE VIEW device_summary WITH (timescaledb.continuous) AS SELECT time_bucket('1 day', module_timestamp) as bucket, sum(CAST(component_data->'common'->'bat' AS INT)) a

我想问,如果我想从所有时间获得聚合值,而不是特定的时间限制,那么连续聚合是否是最佳解决方案 这是我起草的问题

 CREATE VIEW device_summary
WITH (timescaledb.continuous)
    AS
    SELECT
      time_bucket('1 day', module_timestamp) as bucket,
      sum(CAST(component_data->'common'->'bat' AS INT)) as bat_sum
    FROM
      main_componentmessage
    GROUP BY bucket;
我想一个解决方案是将时间段增加到一个非常高的数字(比如说9999999周,包括“时间的开始”),但我不确定这是否有效,因为它与正常的聚合查询没有什么不同,因为时间段刷新间隔将非常高,这就违背了目的。我还不如对所有记录进行求和查询

第二个解决方案是在一天的带扣查询之上创建总和,这样我就可以得到总的总和,但我不确定它是否也有意义

SELECT SUM(bat_sum) from device_summary

关于如何实现这一点有什么建议吗?

在内部,TimescaleDB中的连续聚合为每个bucket创建一个包含部分聚合的物化表。随着新数据添加到原始表中,这些数据将定期更新

因此,拥有一个非常宽的bucket不太可能给您带来任何性能提升,因为正如您所说,它与普通的聚合查询相同


如果您有较小的存储桶,然后计算所有这些存储桶的总和,那么您可能会获得性能改进,因为旧的存储桶不会重新计算,而是随着新数据进入新数据的部分聚合而计算。

内部,TimescaleDB中的连续聚合为每个bucket创建一个包含部分聚合的物化表。随着新数据添加到原始表中,这些数据将定期更新

因此,拥有一个非常宽的bucket不太可能给您带来任何性能提升,因为正如您所说,它与普通的聚合查询相同

如果您有较小的存储桶,然后计算所有这些存储桶的总和,那么您可能会获得性能改进,因为旧的存储桶不会重新计算,而是随着新数据进入新数据的部分聚合,新数据的部分聚合将被计算