Flux 在 union 和 group 函数后仍然有 2 个表

问题描述 投票:0回答:1

我使用通量对过去 7 天每天 5 分钟的数据求和。我在 2 列上使用 aggregateWindow,然后 union 将它们重新连接在一起。我使用 sort 和 fill 将每个时间戳上的数据放在一起。这一点工作正常。我的问题是原来的桌子还在那里。

代码

data = from(bucket: "home")
  |> range(start: -7d)
  |> filter(fn: (r) => r["_field"] == "BATTERY_CHARGE"  or r["_field"] == "BATTERY_DISCHARGE")
  |> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")
  |> map(fn: (r) => ({r with "Battery_Discharge": r.BATTERY_DISCHARGE / 12.0}))
  |> map(fn: (r) => ({r with "Battery_Charge": r.BATTERY_CHARGE / 12.0}))
  |> keep(columns: ["_time", "Battery_Charge", "Battery_Discharge"])
Discharge_Sum = data
  |> aggregateWindow(column: "Battery_Discharge", every: 1d, offset: -8h, fn: sum)
Charge_Sum = data
  |> aggregateWindow(column: "Battery_Charge", every: 1d, offset: -8h, fn: sum)
union(tables: [Discharge_Sum, Charge_Sum])
  |> yield(name: "result")
  |> group(columns: ["_time"], mode: "by")
  |> sort(columns: ["Battery_Charge"])
  |> fill(column: "Battery_Discharge", usePrevious: true)
  |> tail(n: 1)
  |> group()
  |> tail(n: 7)
  |> drop(fn: (column) => column =~ /^(_start|_stop|_measurement|location|region)/)
  |> rename(columns: {Battery_Discharge: "Battery Discharge", Battery_Charge: "Battery Charge"})

表格数据如下

最下面的桌子是我要保留的。

我一直找不到任何允许删除表的东西。我试图过滤掉第一个表值,但联合后过滤函数仅适用于输出表。

有什么想法吗?

influxdb flux-influxdb
1个回答
0
投票

对于那些有同样问题的人。解决办法是去掉 union 后面的 yield 语句。这只留下更新后的表格,而不是原始表格和新表格。

data = from(bucket: "home")
      |> range(start: -7d)
      |> filter(fn: (r) => r["_field"] == "BATTERY_CHARGE"  or r["_field"] == "BATTERY_DISCHARGE")
      |> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")
      |> map(fn: (r) => ({r with "Battery_Discharge": r.BATTERY_DISCHARGE / 12.0}))
      |> map(fn: (r) => ({r with "Battery_Charge": r.BATTERY_CHARGE / 12.0}))
      |> keep(columns: ["_time", "Battery_Charge", "Battery_Discharge"])
    Discharge_Sum = data
      |> aggregateWindow(column: "Battery_Discharge", every: 1d, offset: -8h, fn: sum)
    Charge_Sum = data
      |> aggregateWindow(column: "Battery_Charge", every: 1d, offset: -8h, fn: sum)
    union(tables: [Discharge_Sum, Charge_Sum])
    //  |> yield(name: "result")
      |> group(columns: ["_time"], mode: "by")
      |> sort(columns: ["Battery_Charge"])
      |> fill(column: "Battery_Discharge", usePrevious: true)
      |> tail(n: 1)
      |> group()
      |> tail(n: 7)
      |> drop(fn: (column) => column =~ /^(_start|_stop|_measurement|location|region)/)
      |> rename(columns: {Battery_Discharge: "Battery Discharge", Battery_Charge: "Battery Charge"})
© www.soinside.com 2019 - 2024. All rights reserved.