MLy*_*yck 5 postgresql timescaledb
最近才开始使用 TimescaleDB 和 postgrest 来处理大多数数据请求。
但是,我遇到了一个问题,即我对时间序列数据的请求效率极低。
这是一个数据系列,可以是任何时间长度,具有特定的整数值。
大多数情况下,除非出现异常,否则该值将相同。因此,而不是获取 +10,000 行数据。我想将其汇总为“时间块”。
假设连续 97 个项目的值为 100(每 5 分钟有一个新项目)#98 连续 5 个项目的值是 48,然后又回到 100 的另外 2,900 行。
我不想获取 3002 个项目来显示此数据。我应该只需要获取 3 个项目。
但是我在弄清楚如何使用 timescaledb 做到这一点时遇到了一些麻烦。
基本上,如果该值与最后一个值相同,则将其聚合。这就是我需要它做的。
有谁知道如何使用连续聚合(或者如果有更快的方法)在 timescaleDB 中为这种情况构建 VIEW 来获取它?
您可以使用窗口函数和子选择实现所需的结果:
SELECT time, value FROM (
SELECT
time,
value,
value - LAG(value) OVER (ORDER BY time) as diff
FROM hypertable) ht
WHERE diff IS NULL OR diff != 0;
Run Code Online (Sandbox Code Playgroud)
您使用窗口函数计算与前一行的差异,然后过滤外部查询中差异为 0 的所有行。
| 归档时间: |
|
| 查看次数: |
801 次 |
| 最近记录: |