#r #influxdb #httr
#r #притокдб #httr
Вопрос:
Я могу получить данные с помощью этого запроса с помощью Node-RED, но мне нужно получить их с помощью R.
Это все, что я успел узнать.
post.1 <- httr::POST(url=paste0("http://", influx.ip, ":8086/api/v2/signin"),
authenticate(influx.user, influx.passwd))
# Authentication seems to work.
influx.query <- 'from(bucket: "nr_meas")
|> range(start: -12h)'
post.2 <- httr::POST(url=paste0("http://", influx.ip, ":8086/api/v2/query"),
query=list(org=influx.org),
add_headers("Content-Type: application/json",
'Accept: application/csv'),
body=list(q=influx.query)
)
content(post.2)
# $code
# [1] "invalid"
#
# $message
# [1] "failed to decode request body: invalid character '-' in numeric literal"
Сохранить из Node-RED не вариант (на другом компьютере).
Каков правильный способ получения данных из InfluxDB в R?
Комментарии:
1. Я не являюсь пользователем influx, но я ожидаю, что во
post.1
втором запросе потребуется использовать ту же аутентификацию, что и во втором запросе. Между двумя вызовами нет общего «сеанса»POST
. Попробуйте добавить свойauthenticate(..)
ко второму вызову или посмотрите docs.influxdata.com/influxdb/v2.0/reference/api для использования токенов аутентификации.2. Спасибо за совет. Я только что попробовал это, а также add_headers(paste0(«Авторизация: токен», influx.token)), но генерируется та же ошибка.
Ответ №1:
Вы могли бы попробовать InfluxDB 2.0 R client:
library(influxdbclient)
client <- InfluxDBClient$new(
url = paste0("http://", influx.ip, ":8086"),
token = "my-token",
org = influx.org)
data <- client$query('from(bucket: "nr_meas") |> range(start: -12h) |> drop(columns: ["_start", "_stop"])')