Commit 94121baa authored by Gezer's avatar Gezer
Browse files

Added small changes to fluxQueryBuilder, but still

needs to be finished
parent 1ac40ac4
No related merge requests found
Showing with 21 additions and 3 deletions
+21 -3
......@@ -15,14 +15,12 @@ client = InfluxDBHelper(
bucket=_bucket,
)
# 2) build a Flux query at runtime
builder = (
FluxQueryBuilder()
.bucket(_bucket)
.time_range("-30d", "now()")
.filter_measurement("sensor_data")
.filter_fields("co2", "rh", "temp")
.filter_fields("co2", "rh", "temp") # with "or" we should implement "and" too
.mean()
)
......
......@@ -24,6 +24,7 @@ class FluxQueryBuilder:
self._measurement: Optional[str] = None
self._fields: List[str] = []
self._mean : Optional[bool] = None
self._dict : Optional[dict] = None
def bucket(self, name: str) -> "FluxQueryBuilder":
"""
......@@ -57,7 +58,20 @@ class FluxQueryBuilder:
self._measurement = measurement
return self
def filter_field(self, field: str, value:str) -> "FluxQueryBuilder":
"""
Add filters for one or more _field tags (OR-combined).
:param
Example: field = "room", value = "1/210"
Result: |> filter(fn: (r) => r["room"] == "1/210")
:return: self (for method chaining)
"""
# extend the list of fields to filter
self._dict[field] = value
return self
def filter_fields(self, *fields: str) -> "FluxQueryBuilder":
"""
......@@ -106,6 +120,12 @@ class FluxQueryBuilder:
f'|> filter(fn: (r) => r["_measurement"] == "{self._measurement}")'
)
# Add specified filter if any
#if self._dict:
#for key, value in self._dict.items():
#lines.append(f'|> filter(fn: (r) => r["_field"] == "{f}")')
#lines.append(f'r["_field"] == "{f}"')
# Add field filters if any
if self._fields:
# create OR expression for fields
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment