From 2152f09d889bf973fd2010afff8be57af505d1fc Mon Sep 17 00:00:00 2001 From: NG KA HEI Date: Tue, 30 Jun 2020 16:32:27 +0800 Subject: [PATCH 1/3] Add query_data_frame_stream method --- influxdb_client/client/query_api.py | 30 +++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/influxdb_client/client/query_api.py b/influxdb_client/client/query_api.py index 304a3398..1a8b7da1 100644 --- a/influxdb_client/client/query_api.py +++ b/influxdb_client/client/query_api.py @@ -105,6 +105,27 @@ def query_data_frame(self, query: str, org=None, data_frame_index: List[str] = N from ..extras import pd + _generator = self.query_data_frame_stream(query, org=org, data_frame_index=data_frame_index) + _dataFrames = list(_generator) + + if len(_dataFrames) == 0: + return pd.DataFrame(columns=[], index=None) + elif len(_dataFrames) == 1: + return _dataFrames[0] + else: + return _dataFrames + + def query_data_frame_stream(self, query: str, org=None, data_frame_index: List[str] = None): + """ + Synchronously executes the Flux query and return stream of Pandas DataFrame as a Generator['pd.DataFrame']. + Note that if a query returns more then one table than the client generates a DataFrame for each of them. + + :param query: the Flux query + :param org: organization name (optional if already specified in InfluxDBClient) + :param data_frame_index: the list of columns that are used as DataFrame index + :return: + """ + if org is None: org = self._influxdb_client.org @@ -113,14 +134,7 @@ def query_data_frame(self, query: str, org=None, data_frame_index: List[str] = N _parser = FluxCsvParser(response=response, serialization_mode=FluxSerializationMode.dataFrame, data_frame_index=data_frame_index) - _dataFrames = list(_parser.generator()) - - if len(_dataFrames) == 0: - return pd.DataFrame(columns=[], index=None) - elif len(_dataFrames) == 1: - return _dataFrames[0] - else: - return _dataFrames + return _parser.generator() # private helper for c @staticmethod From ea99f370c4ef65dbf802cf80ed6a5edb5ad688ae Mon Sep 17 00:00:00 2001 From: NG KA HEI Date: Tue, 30 Jun 2020 18:15:14 +0800 Subject: [PATCH 2/3] Update CHANGELOG.md --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7a0bb39..fc0570c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ 1. [#112](https://github.com/influxdata/influxdb-client-python/pull/113): Support timestamp with different timezone in _convert_timestamp 1. [#120](https://github.com/influxdata/influxdb-client-python/pull/120): ciso8601 is an optional dependency and has to be installed separably +### API +1. [#121](https://github.com/influxdata/influxdb-client-python/pull/121): Added query_data_frame_stream method + ### Bug Fixes 1. [#117](https://github.com/influxdata/influxdb-client-python/pull/117): Fixed appending default tags for single Point From 29a9c33f8d0e7959e519276107174545cc42f087 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Bedn=C3=A1=C5=99?= Date: Tue, 30 Jun 2020 12:18:46 +0200 Subject: [PATCH 3/3] docs: update changelog --- CHANGELOG.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc0570c9..a571e52e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,6 @@ ### Features 1. [#112](https://github.com/influxdata/influxdb-client-python/pull/113): Support timestamp with different timezone in _convert_timestamp 1. [#120](https://github.com/influxdata/influxdb-client-python/pull/120): ciso8601 is an optional dependency and has to be installed separably - -### API 1. [#121](https://github.com/influxdata/influxdb-client-python/pull/121): Added query_data_frame_stream method ### Bug Fixes