据我所知,不可能在 Kapacitor TickScript 中执行嵌套查询,所以我正在寻找其他方法来实现与 InfluxQL 查询相同的结果:
select count(*) from (SELECT sum("value") FROM "measurement"."autogen"."consumption" WHERE (time > now() -5d -1h AND time <= now() - 5d) GROUP BY time(60m, 1ms), "param1", "param2", "param3")
该查询的结果是具有一个值的单个点,其中包含来自嵌套查询的总行数,例如 50。
我在tickscript中写了类似的东西:
var cron = '0 59 * * * * *'
var size_1 = batch
|query('''
SELECT sum(value) FROM "measurement"."autogen"."consumption"
''')
.period(1h)
.offset(5d - 1m - 1ms)
.groupBy(time(60m, 1ms), 'param1', 'param2', 'param3')
.fill(1)
.cron(cron)
|count('sum')
|log()
size_1
|alert()
.kafka()
.kafkaTopic('influx')
但是我在输出中没有得到单个值,而不是我有多个点仍然由查询中的 3 个参数('param1'、'param2'、'param3')分组,并且它们只计算为非唯一集参数,kapacitor log() 的片段:
2021-04-21T03:51:00.220+02:00
Kapacitor Point
3 Tags
param1: 2.8.0
param2: 0015474_7
param3: SUPPLEMENTARY
1 Fields
count: 2
2021-04-21T03:51:00.221+02:00
Kapacitor Point
3 Tags
param1: 2.8.0
param2: PW0001_1
param3: SUPPLEMENTARY
1 Fields
count: 2
etc.
如何在 kapacitor tickscript 中使用单个 count() 结果获得相同的输出,就像在 influxQL 查询中一样?