如何在InfluxQL查询中自动更新日期实现Grafana当日光伏累计电量统计
方案解答
方法1:直接修改InfluxQL实现日期自动更新(成本最低,优先选)
你完全不用手动修改日期,InfluxQL原生支持相对时间计算和日期截断语法,把你的查询语句替换为下方内容即可自动适配当日时间区间:
SELECT sum("value") FROM "solar/ina219/energy" WHERE time >= now()::date AND time < now()::date + 1d
语法说明:
now()::date会自动将当前时间截断到当日00:00:00now()::date + 1d对应次日00:00:00,完全匹配你原查询的时间区间逻辑,任意日期执行都会自动取当天的统计范围
如果你的Grafana仪表盘还要支持查看历史任意日期的统计值,直接用Grafana自带的全局时间变量$timeFilter替换时间判断条件即可:
SELECT sum("value") FROM "solar/ina219/energy" WHERE $timeFilter
后续在Grafana面板顶部选择任意时间范围,查询都会自动适配,不需要调整语句。
方法2:Node-RED预计算后存储(适合数据量大、高频查询的场景)
如果你的采样设备多、运行时间久,每次查询sum全量10秒采样数据的性能会逐步下降,这种场景下选Node-RED预计算更合适:
- 新增一个定时注入节点,设置为每天23:59:50触发
- 调用InfluxDB查询当天累计发电量,把结果写入单独的测量值比如
solar/daily_energy,每条数据对应一天的总发电量 - 后续查询每日发电量直接读取这个测量值的单条数据即可,查询速度快,也方便做长期的年度、月度统计
选型建议
如果只是日常查看当日/指定时间段的发电量,用方法1就足够,不需要修改现有数据链路,改两行查询就能搞定,实现成本最低。如果后续要做长期能效分析、批量报表导出,再考虑新增Node-RED预计算的逻辑即可。
内容的提问来源于stack exchange,提问作者Rohan
相关产品推荐
相关产品推荐

