在 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'。
我目前是 运行 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'。