InfluxDB 2.0 写入数据及查询

发布时间: 2021-06-10 16:33:22 作者: 大象笔记

目标

写入数据格式 Line protocol

https://docs.influxdata.com/influxdb/v2.0/reference/syntax/line-protocol/

格式:

<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]

这样看,还是太抽象,很难直观的区分 measurement, tag_key, field_key 的使用规范。

找个例子看会直观一些,例如官方提供的空气传感器的数据示例:

https://github.com/influxdata/influxdb2-sample-data/blob/master/air-sensor-data/air-sensor-data.lp

lp 是 Line protocol 的缩写

airSensors,sensor_id=TLM0100 temperature=71.18922021239435,humidity=35.096794192432846,co=0.49012238573499495 1623288483000000000

设计原则 - InfluxDB schema design

https://docs.influxdata.com/influxdb/v2.0/write-data/best-practices/schema-design/

Influx 命令行写入

例如,我想将上面的数据示例写入我本地安装的 Influx DB 2.0:

influx write \
  -b oxygen \
  -o sunzhongwei.com \
  'airSensors,sensor_id=TLM0100 temperature=71.18922021239435,humidity=35.096794192432846,co=0.49012238573499495 1623288483000000000'

参考:

https://docs.influxdata.com/influxdb/v2.0/write-data/developer-tools/influx-cli/

同时,也支持 csv 以及 txt (lp 数据行) 这两种批量格式。

如何查看写入的数据

最简单直观的方式是访问 InfluxDB UI

http://localhost:8086/

选择 Explore 菜单

输入查询语句:

from(bucket: "oxygen")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "airSensors")
  |> filter(fn: (r) => r["sensor_id"] == "TLM0100")
  |> filter(fn: (r) => r["_field"] == "temperature")

这里的 v.timeRangeStart 和 v.timeRangeStop 代表时间区间下拉框选中的时间段,例如

Past 12h, 即过去 12 小时。效果如图:

我是一名山东烟台的开发者,联系作者