首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将PromQL转换为SQL

将PromQL转换为SQL
EN

Stack Overflow用户
提问于 2021-02-17 22:13:59
回答 1查看 581关注 0票数 0

我需要使用timescaleDB转换器将我的prometheus指标转换为pgsql,我正在尝试将查询从promQL更改为promQL。我有很多查询,几乎全部都做了,但我仍然坚持这个查询,现在不能将这个promQL查询转换为SQL:

sum(sum(increase(my_metric{}[1h])) by (label) > bool 0)

我的桌子是这样的:(按标签订购)

代码语言:javascript
复制
time(timestamptz), value(double), label(integer)
=================================================
2021-02-17 21:50:01.690092+00  3.1    1
2021-02-17 21:45:01.390661+00  4.1    1
2021-02-17 21:50:01.690092+00  4.5    2
2021-02-17 21:45:01.390661+00  4.5    2
2021-02-17 21:50:01.690092+00  1.23   3
2021-02-17 21:45:01.390661+00  4.46   3

我需要的是一个计数器,在时间上检查每个标签的值,如果值被更改,那么它应该添加一个计数器。对于promQL,这是一个简单的任务:

sum(sum(increase(my_metric{}[5m])) by (label) > bool 0)或偶数:sum(max(increase(my_metric{}[5m])) by (label) > bool 0)

对于上面的数据样本结果应该是2,它应该为标签1和3添加一个,标签2在这段时间内没有变化,所以它不应该添加任何计数器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-17 22:31:40

在Postgres中,可以使用lag()和累积计数:

代码语言:javascript
复制
select t.*,
       count(*) filter (where prev_value is distinct from value) over (order by time) 
from (select t.*,
             lag(value) over (order by time) as prev_value
      from t
     ) t
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66250687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档