Skip to content

Commit bce3c5a

Browse files
committed
Add chunked query support for DataFrameClient
1 parent a591760 commit bce3c5a

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

influxdb/_dataframe_client.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from __future__ import unicode_literals
99

1010
import math
11+
from collections import defaultdict
1112

1213
import pandas as pd
1314

@@ -131,25 +132,26 @@ def write_points(self,
131132
protocol=protocol)
132133
return True
133134

134-
def query(self, query, chunked=False, database=None):
135+
def query(self, query, dropna=True, **kwargs):
135136
"""
136137
Quering data into a DataFrame.
137138
138-
:param chunked: [Optional, default=False] True if the data shall be
139-
retrieved in chunks, False otherwise.
139+
:param query: the actual query string
140+
:param dropna: drop columns where all values are missing
141+
:param **kwargs: additional parameters for ``InfluxDBClient.query``
140142
141143
"""
142-
results = super(DataFrameClient, self).query(query, database=database)
144+
results = super(DataFrameClient, self).query(query, **kwargs)
143145
if query.strip().upper().startswith("SELECT"):
144146
if len(results) > 0:
145-
return self._to_dataframe(results)
147+
return self._to_dataframe(results, dropna)
146148
else:
147149
return {}
148150
else:
149151
return results
150152

151-
def _to_dataframe(self, rs):
152-
result = {}
153+
def _to_dataframe(self, rs, dropna=True):
154+
result = defaultdict(list)
153155
if isinstance(rs, list):
154156
return map(self._to_dataframe, rs)
155157
for key, data in rs.items():
@@ -163,6 +165,11 @@ def _to_dataframe(self, rs):
163165
df.set_index('time', inplace=True)
164166
df.index = df.index.tz_localize('UTC')
165167
df.index.name = None
168+
result[key].append(df)
169+
for key, data in result.items():
170+
df = pd.concat(data).sort_index()
171+
if dropna:
172+
df.dropna(how='all', axis=1, inplace=True)
166173
result[key] = df
167174
return result
168175

0 commit comments

Comments
 (0)