From 0cdc257e11c1c92fedc3409435091141b1a8c71e Mon Sep 17 00:00:00 2001 From: shrivardhan Date: Wed, 13 Sep 2023 10:15:04 -0700 Subject: [PATCH] feat: use well-defined dimensions instead of strings (#284) Using dimensions as a list of strings causes ambiguity in other druid clients. Well-defined dimensions makes use of the utility in pydruid to create dimensions as DimensionSpec. This helps with deterministic serialization and de-serialization of the query. --------- Signed-off-by: shrivardhan Co-authored-by: Avik Basu <3485425+ab93@users.noreply.github.com> --- numalogic/connectors/druid.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/numalogic/connectors/druid.py b/numalogic/connectors/druid.py index 9e329259..345a3a37 100644 --- a/numalogic/connectors/druid.py +++ b/numalogic/connectors/druid.py @@ -5,6 +5,7 @@ import pandas as pd import pytz from pydruid.client import PyDruid +from pydruid.utils.dimensions import DimensionSpec from pydruid.utils.filters import Filter from numalogic.connectors._config import Pivot from typing import Optional @@ -50,13 +51,15 @@ def fetch_data( start_dt = end_dt - timedelta(hours=hours) intervals = f"{start_dt.isoformat()}/{end_dt.isoformat()}" + dimension_specs = map(lambda d: DimensionSpec(dimension=d, output_name=d), dimensions) + params = { "datasource": datasource, "granularity": granularity, "intervals": intervals, "aggregations": aggregations, "filter": _filter, - "dimensions": dimensions, + "dimensions": dimension_specs, } _LOGGER.debug(