在 TimescaleDB 中跟踪指标随时间的增长

Tracking Growth of a Metric over Time In TimescaleDB

我目前是 运行 timescaleDB。我有一个 table 看起来类似于下面的

        one_day        | name | metric_value 
------------------------+---------------------
2022-05-30 00:00:00+00 | foo  |    400
2022-05-30 00:00:00+00 | bar  |    200
2022-06-01 00:00:00+00 | foo  |    800
2022-06-01 00:00:00+00 | bar  |    1000

我想查询 returns 指标的增长百分比和原始增长,如下所示。

 name | % growth | growth 
-------------------------
 foo  |  200%    | 400
 bar  |  500%    | 800

我对 timescaleDB 还很陌生,不确定最有效的方法是什么。我试过使用 LAG,但我面临的主要问题是 OVER (GROUP BY time, url) 不尊重我只想在 group by 中考虑相同的名称并且似乎无法绕过它。该查询适用于单个名称。

谢谢!

使用 LAG 通过 PARTITION 选项获取相同名称的先前值:

lag(metric_value,1,0) over (partition by name order by one_day) 

这表示,当按 'one_day' 排序时,在每个 'name' 中,给我 'metric_value' 的前一个(LAG 的第二个参数表示 1 行)值;如果没有上一行,请给我'0'。