欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

InfluxDB 2.0 之Flux语法篇

发布时间:2023/12/4 编程问答 52 豆豆
生活随笔 收集整理的这篇文章主要介绍了 InfluxDB 2.0 之Flux语法篇 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

由于项目 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 

总结

以上是生活随笔为你收集整理的InfluxDB 2.0 之Flux语法篇的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。