Filed type error

Hi,

Using InfluxDB 2.7.1

I have a question about field types inside the influxdb shards and how they defined.

So I write to the database using the python API by using the line protocol, for example, Measurement name “DevicePower” and signal name “Power_Out”, this is a On-Off signal (so should be either bool or integer)

I write it like this:

A: “DevicePower Power_Out=1 1703235514605”

B: “DevicePower Power_Out=1 1703663691558”

I encountered instances when my script reports an error when writing to the InfluxDB, the error is of conflicting field type:

“failure writing points to database: partial write: field type conflict: input field "Power_Out" on measurement "DevicePower" is type float, already exists as type integer”

sometimes its the other way around: “is type integer, already exists as type float”

I thought the type is decided using the value itself (1 for integer, 1.0 for float)

So I wanted to check what is the type of Power_Out in the datebase, and I decided to use the following query:

import “types”

from (bucket: “devices”)

|>range start: v.timeRangeStart, stop: v.timeRangeStop)

|> filter(fn: (r) => r._field == “Power_Out”)

|> aggregateWindow(every: 1m, fn: last, createEmpty: false)

|> filter(fn: (r) => types.isType(v: r._value, type: “float”))

“”"

changing also the float to integer/uint - in all of the cases this query returns data only when the type is float, even when the values that I pass are 100% integers/ unsigned integers.

So how is the type decided and how can I influence it or control it?

Have a great 2024,

David