1

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.

0 Answers0