do always sort
This commit is contained in:
26
influx.py
26
influx.py
@ -292,7 +292,7 @@ class InfluxDBWrapper:
|
|||||||
print(msg)
|
print(msg)
|
||||||
|
|
||||||
reader = self._client.query_api().query_csv(msg)
|
reader = self._client.query_api().query_csv(msg)
|
||||||
sort = False
|
print('CSV')
|
||||||
converters = None
|
converters = None
|
||||||
group = None
|
group = None
|
||||||
column_names = None
|
column_names = None
|
||||||
@ -303,6 +303,7 @@ class InfluxDBWrapper:
|
|||||||
for row in reader:
|
for row in reader:
|
||||||
if not row:
|
if not row:
|
||||||
continue
|
continue
|
||||||
|
print(row)
|
||||||
if row[0]:
|
if row[0]:
|
||||||
if row[0] == '#datatype':
|
if row[0] == '#datatype':
|
||||||
converters = {i: CONVERTER.get(d) for i, d in enumerate(row) if i > 2}
|
converters = {i: CONVERTER.get(d) for i, d in enumerate(row) if i > 2}
|
||||||
@ -311,6 +312,7 @@ class InfluxDBWrapper:
|
|||||||
group = row
|
group = row
|
||||||
continue
|
continue
|
||||||
if column_names is None:
|
if column_names is None:
|
||||||
|
print('COL', row)
|
||||||
column_names = row
|
column_names = row
|
||||||
keys = {}
|
keys = {}
|
||||||
for col, (name, grp) in enumerate(zip(column_names, group)):
|
for col, (name, grp) in enumerate(zip(column_names, group)):
|
||||||
@ -319,8 +321,6 @@ class InfluxDBWrapper:
|
|||||||
# if name in keynames or (columns is None and name not in dropcols):
|
# if name in keynames or (columns is None and name not in dropcols):
|
||||||
if name in keynames or columns is None:
|
if name in keynames or columns is None:
|
||||||
keys[col] = converters.pop(col)
|
keys[col] = converters.pop(col)
|
||||||
else:
|
|
||||||
sort = True
|
|
||||||
valuecls = NamedTuple([row[i] for i in converters])
|
valuecls = NamedTuple([row[i] for i in converters])
|
||||||
keycls = NamedTuple([row[i] for i in keys])
|
keycls = NamedTuple([row[i] for i in keys])
|
||||||
continue
|
continue
|
||||||
@ -328,23 +328,22 @@ class InfluxDBWrapper:
|
|||||||
# new table, new key
|
# new table, new key
|
||||||
table = row[2]
|
table = row[2]
|
||||||
key = keycls(f(row[i]) for i, f in keys.items())
|
key = keycls(f(row[i]) for i, f in keys.items())
|
||||||
|
print('new table', table, key)
|
||||||
if result.get(key) is None:
|
if result.get(key) is None:
|
||||||
result[key] = []
|
result[key] = []
|
||||||
elif not sort:
|
|
||||||
# this should not happen
|
|
||||||
sort = True
|
|
||||||
|
|
||||||
result[key].append(valuecls(f(row[i]) for i, f in converters.items()))
|
result[key].append(valuecls(f(row[i]) for i, f in converters.items()))
|
||||||
if last:
|
if last:
|
||||||
|
print('LAST')
|
||||||
for key, table in result.items():
|
for key, table in result.items():
|
||||||
result[key], = table
|
result[key], = table
|
||||||
elif sort:
|
else:
|
||||||
for table in result.values():
|
for table in result.values():
|
||||||
table.sort()
|
table.sort()
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def curves(self, start=None, stop=None, measurement=None, field='float', interval=None,
|
def curves(self, start=None, stop=None, measurement=('*.value', '*.target'), field='float',
|
||||||
add_prev=3600, add_end=False, **tags):
|
interval=None, add_prev=3600, add_end=True, **tags):
|
||||||
"""get curves
|
"""get curves
|
||||||
|
|
||||||
:param start: start time (default: one month ago)
|
:param start: start time (default: one month ago)
|
||||||
@ -359,14 +358,15 @@ class InfluxDBWrapper:
|
|||||||
where <tuple of keys> and <row> are NamedTuple
|
where <tuple of keys> and <row> are NamedTuple
|
||||||
<row> is (<timestamp>, <value>)
|
<row> is (<timestamp>, <value>)
|
||||||
|
|
||||||
when field='float' (the default), the returned values are either a floats or None
|
when _field='float' (the default), the returned values are either a floats or None
|
||||||
"""
|
"""
|
||||||
for key, val in zip(('_measurement', '_field'), (measurement, field)):
|
tags.setdefault('_measurement', measurement)
|
||||||
tags.setdefault(key, val)
|
tags.setdefault('_field', field)
|
||||||
start, stop = abs_range(start, stop)
|
start, stop = abs_range(start, stop)
|
||||||
rstart, rstop = round_range(start, stop, interval)
|
rstart, rstop = round_range(start, stop, interval)
|
||||||
if rstart < rstop:
|
if rstart < rstop:
|
||||||
result = self.query(rstart, rstop, interval, columns=[], **tags)
|
result = self.query(rstart, rstop, interval, columns=None, **tags)
|
||||||
|
# result = self.query(rstart, rstop, interval, columns=['stream', 'device'], **tags)
|
||||||
else:
|
else:
|
||||||
result = {}
|
result = {}
|
||||||
if add_prev:
|
if add_prev:
|
||||||
|
Reference in New Issue
Block a user