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

Added small changes to fluxQueryBuilder, but still

needs to be finished
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