Как получить более 10 тыс. Строк из InfluxDB с помощью Pandas?
Я пытаюсь использовать Python-клиент InfluxDB для извлечения данных, хранящихся в InfluxDB, но не могу больше 10 000 строк. Примеры, которыми я (безуспешно) следую, находятся здесь. В итоге:
import influxdb
dfclient = influxdb.DataFrameClient('localhost', 8086, 'root', 'root', 'mydb')
q = "select * from some_measurement"
df = dfclient.query(q, chunked=True) # Returns only 10k points
Кажется, что проблема связана с внутренними ограничениями InfluxDB, задокументированными здесь (а именно, max-row-limit
вариант конфигурации). Я просматриваю источники, чтобы попытаться выяснить, как получить DataFrame размером более 10 тыс. Строк, но любая помощь в решении этой проблемы будет высоко оценена.
2 ответа
Проблема вызвана DataFrameClient
"s query
просто игнорируя chunked
аргумент [ код].
Обходной путь, который я обнаружил, не использует стандарт InfluxDBClient
вместо. Код, показанный в вопросе, становится:
import influxdb
client = influxdb.InfluxDBClient('localhost', 8086, 'root', 'root', 'btc')
q = "select * from some_measurement"
df = pd.DataFrame(client.query(q, chunked=True, chunk_size=10000).get_points()) # Returns all points
Также стоит подчеркнуть, что начиная с версии 1.2.2 max-row-limit
настройка (т.е. значение по умолчанию для chunk_size
в приведенном выше коде) был изменен с 10k на неограниченный.
Вы пытались установить флаг chunked в своем запросе, чтобы получить данные обратно в виде фрагментов. Это можно сделать с помощью запроса, подобного следующему:
influxdb.DataFrameClient(host=’localhost’, port=8086, username=’root’, password=’root’, database=None, ssl=False, verify_ssl=False, timeout=None, use_udp=False, udp_port=4444, proxies=None)
Вы можете прочитать больше об этом здесь, в разделе 1.2.3.