I have tried this and came very close to getting it. But strangely it doesn’t work in the case of volume (sum operation) and I don’t know why.
close=from(bucket: "bucket_prueba_123")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> group(columns:["pair"])
|> filter(fn: (r) => r["_field"] == "close")
|> aggregateWindow(
every: 5m,
fn: last,
column: "_value",
timeSrc: "_stop",
timeDst: "_time",
createEmpty: true
)
open=from(bucket: "bucket_prueba_123")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> group(columns:["pair"])
|> filter(fn: (r) => r["_field"] == "open")
|> aggregateWindow(
every: 5m,
fn: first,
column: "_value",
timeSrc: "_stop",
timeDst: "_time",
createEmpty: true
)
high=from(bucket: "bucket_prueba_123")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> group(columns:["pair"])
|> filter(fn: (r) => r["_field"] == "high")
|> aggregateWindow(
every: 5m,
fn: max,
column: "_value",
timeSrc: "_stop",
timeDst: "_time",
createEmpty: true
)
low=from(bucket: "bucket_prueba_123")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> group(columns:["pair"])
|> filter(fn: (r) => r["_field"] == "low")
|> aggregateWindow(
every: 5m,
fn: min,
column: "_value",
timeSrc: "_stop",
timeDst: "_time",
createEmpty: true
)
volume=from(bucket: "bucket_prueba_123")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> group(columns:["pair"])
|> filter(fn: (r) => r["_field"] == "volume")
|> aggregateWindow(
every: 5m,
column: "_value",
fn: sum, // fails
timeSrc: "_stop",
timeDst: "_time",
createEmpty: true
)
final=union(tables: [open, close,high,low,volume])
|> pivot(
rowKey:["_time"],
columnKey: ["_field"],
valueColumn: "_value")
|> yield(name: "final")
I have tried this and came very close to getting it. But strangely it doesn’t work in the case of volume (sum operation) and I don’t know why.
This code doesn’t work but if I delete the volume part it works perfectly and returns what I expected it to return