I want to write point InfluxDB with such signature:
{
"_field": "some_uuid",
"_value": float64,
"_time": "2006-01-02T15:04:05.000Z"
}
But uuid writes to "field" key instead of "_field", and "_field" key has default - "value".
How can i fix it?
This is my sample code:
import (
"fmt"
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
"time"
)
type TagData struct {
TagId string `json:"tag_id"`
Value float64 `json:"value"`
Timestamp string `json:"timestamp"`
}
func main() {
inflClient := influxdb2.NewClient("my_url", "my_token")
writeAPI := inflClient.WriteAPI("my_org", "my_bucket")
data := TagData{
TagId: "d8f623a9-c255-4e0d-9c2f-126056875cef",
Value: 300,
Timestamp: "2023-12-11T15:35:42.343Z",
}
parsedTime, err := time.Parse("2006-01-02T15:04:05.000Z", data.Timestamp)
if err != nil {
fmt.Println("Error parsing time:", err)
return
}
point := influxdb2.NewPointWithMeasurement("data").
AddTag("field", data.TagId).
AddField("value", data.Value).
SetTime(parsedTime.UTC())
writeAPI.WritePoint(point)
writeAPI.Flush()
inflClient.Close()
}
If someone runs into the same problem - possible solutions are:
point := influxdb2.NewPointWithMeasurement("your_measurement").
AddField(data.TagId, data.Value).
SetTime(parsedTime.UTC())
point := influxdb2.NewPoint("your_measurement",
map[string]string{},
map[string]interface{}{data.TagId: data.Value},
parsedTime.UTC())