0

我有一个 Node.js 应用程序,我正在尝试查询 InfluxDB 的云产品,我已经设置了它,所以现在我可以很好地编写数据,我需要查询部分。我的数据包含一些值 - 或者无论如何 - 我有一个经过的时间、服务和 serviceID。

这是我在运行之前输出它时的查询

fluxValue: 'from(bucket: "perf_mon")\n' +
    '|> range(start: duration(v: "-7d"))\n' +
    '|> filter(fn: (r) => r["_measurement"] == "elapsedtime")\n' +
    '|> filter(fn: (r) => r["_field"] == "elapsedtime")\n' +
    '|> filter(fn: (r) => r["serviceADD"] == "service")\n' +
    '|> filter(fn: (r) => r["abcdxyz"] == "serviceID")

这是来自查询生成器

from(bucket: "perf_mon")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "elapsedTime")
  |> filter(fn: (r) => r["_field"] == "elapsedTime")
  |> filter(fn: (r) => r["serviceADD"] == "service")
  |> filter(fn: (r) => r["abcdxyz"] == "serviceID")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> yield(name: "mean")

这是我的完整代码 - 只是在一个文件中测试模式。

const queryApi = new InfluxDB({url, token}).getQueryApi(org)
const start = fluxDuration('-7d')
const measurement = 'elapsedtime'
const service = 'serviceADD'
const serviceID = 'abcdxyz'
const fluxQuery = flux`from(bucket: "${bucket}")
|> range(start: ${start})
|> filter(fn: (r) => r["_measurement"] == "${measurement}")
|> filter(fn: (r) => r["_field"] == "${measurement}")
|> filter(fn: (r) => r["${service}"] == "service")
|> filter(fn: (r) => r["serviceID"] == "serviceID")`


console.log('query:', fluxQuery)
console.log('*** QUERY ROWS ***')


queryApi.queryRows(fluxQuery, {
  next(row, tableMeta) {
    console.log('Row:', row)
    const o = tableMeta.toObject(row)
    console.log(JSON.stringify(o, null, 2))
    console.log(
      `${o._time} ${o._measurement} in '${o.location}' (${o.example}): ${o._field}=${o._value}`
    )
  },
  error(error) {
    console.error(error)
    console.log('\nFinished ERROR')
  },
  complete() {
    console.log('\nFinished SUCCESS')
  },
})

我从包的 github 存储库中的示例中获得了 95% 的代码@influxdata/influxdb-client

我的问题是我想知道如何制作它,以便我可以查询 InfluxDB 并以一种格式取回我的数据,然后我可以处理或直接发送到我的前端。我在代码和/或查询中遗漏了什么,所以我无法通过我的脚本或 InfluxDB 云控制台取回数据?

4

1 回答 1

0

我最终自己解决了这个问题,这就是我得到的查询

const fluxQuery = flux`from(bucket: "${bucket}")
|> range(start: ${start}, stop: now())
|> filter(fn: (r) => r["_measurement"] == "${measurement}")
|> filter(fn: (r) => r["${serviceID}"] == "serviceID")
|> filter(fn: (r) => r["_field"] == "${measurement}")
于 2020-10-19T22:46:23.230 回答