I have this dataclass
with a lineprotocol
schema like this:
from datetime import date, datetime
from aioinflux import lineprotocol, TIMEDT, TAG, FLOAT, MEASUREMENT, STR, INT
from dataclasses import dataclass
from shared import DEBUG_TABLE_NAME
@lineprotocol(
schema=dict(
timestamp=TIMEDT,
measurement=MEASUREMENT,
target_id=INT,
type=TAG,
weight=FLOAT,
confidence=FLOAT,
statement=TAG,
now_time=TIMEDT,
height=INT,
dt_time=TIMEDT,
success=TAG,
)
)
@dataclass
class DataPoint:
timestamp: datetime
target_id: int
type: str
weight: float
confidence: float
statement: str
now_time: datetime
height: int
dt_time: datetime
success: str
measurement: str = DEBUG_TABLE_NAME
but when trying to run the code i get this error:
aioinflux.serialization.usertype.SchemaError: Can't have more than one timestamp-type attribute [~TIMEINT, ~TIMEDT, ~TIMESTR]
I still need to have some other attributes like now_time
and dt_time
in, some short, of time format. But this seems to be raising an error for aioinflux
. How can this be avoided?
Valid value types for fields are only: Float, Integer, UInteger, String, Boolean (Reference)
What you can do, is to store the date either as an integer (timestamp) or a string (RFC3339 format). You can then cast it back in Flux queries, if need be, using: