subquery - InfluxDb 1.8 检索时间作为主查询的子查询
问题描述
我正在尝试创建一个查询,该查询使用从第二个表中检索的开始时间从一个表中检索所有数据。
- 检索我最近的开始时间
从 InitializedApplicationEvent 中选择最后一个(“timeAsString”)
返回:“2020-08-26T20:41:01.762Z”
- 在那之后检索 id 有效
从“Ids”中选择“idAsField”,其中时间 >='2020-08-26T20:41:01.762Z'
- 但我想要的是一个子查询来获取时间
SELECT "idAsField" FROM "Ids" where time >= (SELECT last("timeAsString") FROM "InitializedApplicationEvent")
有没有办法用 InfluxDB 1.8 做到这一点?
解决方案
找到了一种在最新应用程序启动时间后查询 Id 的方法,并且只有那些将“inActiveConfiguration”标志设置为 true 的方法。
“SHOW TAG VALUES FROM ...”将不起作用,因为标签值与 InfluxDB 中的时间戳无关。
您必须将 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 变量的限制。