Запись pandas кадра данных в inlfluxdb со столбцом времени - PullRequest
2 голосов
/ 28 апреля 2020

Я создаю фрейм данных из списка со строкой заголовка как

headers = ["InstanceTag", "AnyVendorColtInterfaceTrafficRatioIN", "AnyVendorColtInterfaceTrafficRatioOUT", "AnyVendorColtInterfaceValidPolls", "Service", "CircuitID", "CountryCode", "UsageIdentifier", "Customer", "SubInterfaceDescription", "GMTTimeStamp", "LocalTimeStamp", "tz"]
    OutDf = pd.DataFrame(OutList, columns=headers)

Затем я преобразую поле «LocalTimeStamp» в pandas datetime и устанавливаю его как индекс фрейма данных.

    OutDf['LocalTimeStamp'] = pd.to_datetime(OutDf['LocalTimeStamp'], format='%Y-%m-%dT%H:%M:%SZ', infer_datetime_format=True)
    OutDf.set_index('LocalTimeStamp', inplace=True)

Теперь, когда я пытаюсь вставить его в файл influenxdb, происходит сбой!

Данные в LocalTimeStamp выглядят как «2020-02-17 05:20:00»

       client = influxdb.DataFrameClient(host=dbhost, port=dbport, database=dbname, username=username, password=password)
       print(client.write_points(OutDf, 'ubbdata', protocol=u'line', time_precision='s'))

Ошибка:

  File "./pyubb.py", line 116, in <module>
    print(client.write_points(OutDf, 'ubbdata', protocol=u'line', time_precision='s'))
  File "/usr/local/lib/python3.7/site-packages/influxdb/_dataframe_client.py", line 138, in write_points
    protocol=protocol)
  File "/usr/local/lib/python3.7/site-packages/influxdb/client.py", line 530, in write_points
    consistency=consistency)
  File "/usr/local/lib/python3.7/site-packages/influxdb/client.py", line 598, in _write_points
    protocol=protocol
  File "/usr/local/lib/python3.7/site-packages/influxdb/client.py", line 343, in write
    headers=headers
  File "/usr/local/lib/python3.7/site-packages/influxdb/client.py", line 302, in request
    raise InfluxDBClientError(response.content, response.status_code)
influxdb.exceptions.InfluxDBClientError: 400: {"error":"unable to parse 'ubbdata InstanceTag=\"myrouter_PW-Ether4.2_P_PQR/ABC/IA-000000\",AnyVendorColtInterfaceTrafficRatioIN=8430.693333333333,AnyVendorColtInterfaceTrafficRatioOUT=10866.32,AnyVendorColtInterfaceValidPolls=1.0,Service=\"UBB-P\",CircuitID=\"PQR/ABC/IA-000000\",CountryCode=\"SG\",UsageIdentifier=\"PQR/ABC/IA-000000\",Customer=\"Test customer\",SubInterfaceDescription=\"PW-Ether4.2\",GMTTimeStamp=2020-02-16 21:45:00+00:00,tz=\"Asia/Singapore\" 1581918300': invalid number\nunable to parse 

Я думал, что это может быть проблема точности времени, я пробовал все комбинации в параметре time_precision write_points. Но ничего не помогает!

Я пытался использовать протокол "json", с этим я получаю 204 кода повторения, но измерение не создается в дБ.

Может кто-нибудь дать подсказку?

С уважением, -Мани sh

...