You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Flux获取每个日历月内各传感器的最后值?

解决方案:获取月度累计传感器的日历月最后值

针对你的月度重置传感器,要获取每个自然日历月的最后值(即当月消耗),可以通过Flux的aggregateWindow函数实现,以下是调整后的查询:

from(bucket: "home")
// 按需设置时间范围,比如-1y获取近一年完整月份数据
|> range(start: -1y, stop: now())
|> filter(fn: (r) => r["friendly_name"] =~ /1MON$/ and r["friendly_name"] !~ /^Main/)
|> filter(fn: (r) => r["_field"] == "value")
|> filter(fn: (r) => r["_measurement"] == "kWh")
|> filter(fn: (r) => r["entity_id"] !~ /2$/)
// 按自然日历月聚合,取每个月的最后值
|> aggregateWindow(
    every: 1mo,
    fn: last,
    offset: 0s,
    timeSrc: "_start"
  )
// 保留关键字段用于Grafana分组展示
|> keep(columns: ["_time", "_value", "friendly_name", "entity_id"])

关键说明:

  • aggregateWindow参数:
    • every: 1mo 指定按1个月的窗口聚合
    • fn: last 取每个窗口内的最后一个数据点——由于传感器月初归零后持续递增,月末的最后值就是当月总消耗
    • offset: 0s + timeSrc: "_start" 确保窗口严格对齐到自然日历月的起始(每月1日00:00),避免出现跨月的不完整窗口
  • 时间范围设置:
    避免选择跨月的自定义时间范围,建议用-1y(近一年)或Grafana预设的“Last 12 months”,确保覆盖完整的日历月
  • 替换为max值:
    如果想取当月最大值(和last值逻辑一致,因为传感器递增),只需把fn: last改成fn: max即可

Grafana可视化建议:

使用柱状图或折线图,X轴选择_time并设置格式为YYYY-MM,Y轴绑定_value,按friendly_name或entity_id分组,就能直观看到每个传感器的月度消耗数据。

内容的提问来源于stack exchange,提问作者Roberto Ferrari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 20:02:51