2

据我所知,不可能在 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 查询中一样?

4

0 回答 0