Javascript XDB 2.0:分组期间和汇总期间

Javascript XDB 2.0:分组期间和汇总期间,javascript,node.js,influxdb-2,Javascript,Node.js,Influxdb 2,我有一个InfluxDB(版本2),其中每秒都会将一个条目写入我的bucket,还有一个标识符(源的uuid)和一个边值(一些特定于域的度量值,从1到6)。与第二个日志的长列表不同: 2020-05-18T15:57:18 side=1 2020-05-18T15:57:19 side=1 2020-05-18T15:57:20 side=3 2020-05-18T15:57:21 side=3 2020-05-18T15:57:22 side=3 2020-05-18T15:57:23 sid

我有一个InfluxDB(版本2),其中每秒都会将一个条目写入我的bucket,还有一个
标识符
(源的uuid)和一个
值(一些特定于域的度量值,从1到6)。与第二个日志的长列表不同:

2020-05-18T15:57:18 side=1
2020-05-18T15:57:19 side=1
2020-05-18T15:57:20 side=3
2020-05-18T15:57:21 side=3
2020-05-18T15:57:22 side=3
2020-05-18T15:57:23 side=2
2020-05-18T15:57:24 side=2
我想压缩这些条目,以便计算持续时间,即
side=x
保持为真的时间:

from 2020-05-18T15:57:18 to 2020-05-18T15:57:19 side=1 duration=2s
from 2020-05-18T15:57:20 to 2020-05-18T15:57:22 side=3 duration=3s
from 2020-05-18T15:57:23 to 2020-05-18T15:57:24 side=2 duration=2s
我还通过从/到范围限制时间段。这是我当前的查询:

from(bucket: "mybucket")
    |>range(start:2020-01-01T00:00:00.000Z, stop:2020-12-31T00:00:00.000Z
    |>filter(fn:(r) => r.identifier == "3c583530-0152-4ed1-b15f-5bb0747e771e")
我的方法是读取原始数据,然后对其进行迭代,检测侧面的变化(比如
current.side!=last.side
),然后将其作为新条目报告到我的
日志中。当然,这种方法效率很低(JavaScript):

有没有一种方法可以使用XDB查询语言对数据进行分组和汇总

    const data = fetchFromInfluxDB(from, to):
    const terminator = { 'time': new Date(), 'identifier': '', 'side': -1 };
    data.push(terminator); // make sure last item is also reported
    const logbook = new Array();
    let lastSide = -1;
    let from = undefined;
    for (let e of data) {
        if (e.side != lastSide) {
            if (from != undefined) {
                let to = e.time;
                let diff = Math.floor((new Date(to) - new Date(from)) / 1000);
                if (diff > 0) {
                    logbook.push({'from': from, 'to': to, 'side': lastSide, 'seconds': diff});
                }
            }
            lastSide = e.side;
            from = e.time;
        }
    }