首页 > 解决方案 > InfluxDb 1.8 检索时间作为主查询的子查询

问题描述

我正在尝试创建一个查询,该查询使用从第二个表中检索的开始时间从一个表中检索所有数据。

  1. 检索我最近的开始时间

从 InitializedApplicationEvent 中选择最后一个(“timeAsString”)

返回:“2020-08-26T20:41:01.762Z”

  1. 在那之后检索 id 有效

从“Ids”中选择“idAsField”,其中时间 >='2020-08-26T20:41:01.762Z'

  1. 但我想要的是一个子查询来获取时间

SELECT "idAsField" FROM "Ids" where time >= (SELECT last("timeAsString") FROM "InitializedApplicationEvent")

有没有办法用 InfluxDB 1.8 做到这一点?

标签: subqueryinfluxdb

解决方案


找到了一种在最新应用程序启动时间后查询 Id 的方法,并且只有那些将“inActiveConfiguration”标志设置为 true 的方法。

  1. “SHOW TAG VALUES FROM ...”将不起作用,因为标签值与 InfluxDB 中的时间戳无关。

  2. 您必须将 id 值放在标签和字段中。这允许您使用以下查询创建以下 Grafana 变量:

申请开始时间:

从 InitializedApplicationEvent 中选择最后一个(“timeAsString”)

ID:

SELECT "last","inActiveConfiguration" from (SELECT last("IdAsField"),"inActiveConfiguration" FROM "Ids" where time >= ${ApplicationStartTime:sqlstring} group by Id) where "inActiveConfiguration"='true'

需要注意的是,这些变量只会在“仪表板加载时”刷新。Grafana 变量的限制。


推荐阅读