I am trying to convert influx query result into a simple array of structs
type CandlesticksHistoricalData struct {
OpenTime time.Time
Open decimal.Decimal
High decimal.Decimal
Low decimal.Decimal
}
var result []CandlesticksHistoricalData
Flux query looks like this:
from(bucket: "DataManager")
|> range(start: 1638316800, stop:1638316980)
|> filter(fn: (r) => r._measurement == "Candlesticks")
|> filter(fn: (r) => r.exchange == "Deribit")
|> filter(fn: (r) => r.symbol == "BTCUSD")
|> filter(fn: (r) => r.tf == "1Min")
|> filter(fn: (r) => r._field == "o" or r._field == "h" or r._field == "l" or r._field == "c")
I want to iterate over every single result and save candlesticks into 'result'.
Does anybody know any solution?
As a result of this code:
result, err := dm.fluxConn.QueryApi.Query(context.Background(), fluxQuery)
if err != nil {
return nil, err
}
for result.Next() {
record := result.Record()
t := record.Time()
v := record.Value()
f := record.Field()
tc := result.TableChanged()
fmt.Printf("Time: %v, Value : %v, Field %v, TableChanged: %v \n", t, v, f, tc)
}
log looks like this, assuming there are 3 candlesticks in database:
Time: 2021-12-01 00:00:00 +0000 UTC, Value : 56922.5, Field c, TableChanged: true
Time: 2021-12-01 00:01:00 +0000 UTC, Value : 56802, Field c, TableChanged: false
Time: 2021-12-01 00:02:00 +0000 UTC, Value : 56730.5, Field c, TableChanged: false
Time: 2021-12-01 00:00:00 +0000 UTC, Value : 57073, Field h, TableChanged: false
Time: 2021-12-01 00:01:00 +0000 UTC, Value : 56946.5, Field h, TableChanged: false
Time: 2021-12-01 00:02:00 +0000 UTC, Value : 56822, Field h, TableChanged: false
Time: 2021-12-01 00:00:00 +0000 UTC, Value : 56897, Field l, TableChanged: false
Time: 2021-12-01 00:01:00 +0000 UTC, Value : 56800, Field l, TableChanged: false
Time: 2021-12-01 00:02:00 +0000 UTC, Value : 56730.5, Field l, TableChanged: false
Time: 2021-12-01 00:00:00 +0000 UTC, Value : 56995.5, Field o, TableChanged: false
Time: 2021-12-01 00:01:00 +0000 UTC, Value : 56907.5, Field o, TableChanged: false
Time: 2021-12-01 00:02:00 +0000 UTC, Value : 56810.5, Field o, TableChanged: false
I want to iterate over time first and then over its fields, so it would look like this:
Time: 2021-12-01 00:00:00 +0000 UTC, Value : 56922.5, Field c, TableChanged: true
Time: 2021-12-01 00:00:00 +0000 UTC, Value : 57073, Field h, TableChanged: false
Time: 2021-12-01 00:00:00 +0000 UTC, Value : 56897, Field l, TableChanged: false
Time: 2021-12-01 00:00:00 +0000 UTC, Value : 56995.5, Field o, TableChanged: false
Time: 2021-12-01 00:01:00 +0000 UTC, Value : 56802, Field c, TableChanged: false
Time: 2021-12-01 00:01:00 +0000 UTC, Value : 56946.5, Field h, TableChanged: false
Time: 2021-12-01 00:01:00 +0000 UTC, Value : 56800, Field l, TableChanged: false
Time: 2021-12-01 00:01:00 +0000 UTC, Value : 56907.5, Field o, TableChanged: false
Time: 2021-12-01 00:02:00 +0000 UTC, Value : 56730.5, Field c, TableChanged: false
Time: 2021-12-01 00:02:00 +0000 UTC, Value : 56822, Field h, TableChanged: false
Time: 2021-12-01 00:02:00 +0000 UTC, Value : 56730.5, Field l, TableChanged: false
Time: 2021-12-01 00:02:00 +0000 UTC, Value : 56810.5, Field o, TableChanged: false
Version: "github.com/influxdata/influxdb-client-go/v2 v2.12.2" I tried looking on an official github repository page and influxdb docs, but couldn't find anything.