InfluxDB 2.0 之Flux语法篇
由于项目IoTSharp 需要支持InfluxDB, 因此进行了初步尝试, 虽然Flux 语法初次学习, 但查询语句却似曾相识, 如果改一下 标点符号, 你会完全认为他是 C#...
·
由于项目 IoTSharp 需要支持 InfluxDB , 因此进行了初步尝试, 虽然 Flux 语法初次学习, 但查询语句却似曾相识, 如果改一下 标点符号, 你会完全认为他是 C#的拉姆达表达式,
首先看一下写入数据:
using (var writeApi = influxDBClient.GetWriteApi())
{
//
// Write by Point
//
var point = PointData.Measurement("temperature")
.Tag("location", "west")
.Field("value", 55D)
.Timestamp(DateTime.UtcNow.AddSeconds(-10), WritePrecision.Ns);
writeApi.WritePoint("bucket_name", "org_id", point);
//
// Write by LineProtocol
//
writeApi.WriteRecord("bucket_name", "org_id", WritePrecision.Ns, "temperature,location=north value=60.0");
//
// Write by POCO
//
var temperature = new Temperature {Location = "south", Value = 62D, Time = DateTime.UtcNow};
writeApi.WriteMeasurement("bucket_name", "org_id", WritePrecision.Ns, temperature);
}
写入数据看起来类似于 1.0 但是 增加了 bucket 和org这些信息。
新版本的查询则更有意思:
from(bucket: "iotsharp-bucket")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "TelemetryData")
|> filter(fn: (r) => r["DeviceId"] == "a649a429-e82c-406b-8b8e-a3ba48c868fb")
|> yield()
_measurement 相当于表名
DeviceId 其实类似 涛思时序数据库中的 tags 字段,
同时 , 也有类似group之类的语句, 比如
|> group(columns: [""_field""])
如果你想只要 年龄或者 用户名之类的字段 可以使用 类似下面的用法
|> filter(fn: (r) => r["_field"] == "age" or r["_field"] == "username" )
欲了解更多C#中访问 InfluxDB 2.0 的方法, 可以参考我们的代码:
https://gitee.com/IoTSharp/IoTSharp/blob/master/IoTSharp/Storage/InfluxDBStorage.cs
更多推荐
已为社区贡献2条内容
所有评论(0)