fix(viz): calendar heatmap granularity (#13233)
* fix: add time granularity to heatmap query
* fix: add time granularity to heatmap query
* Add aggregation for druid
* Fix lint
* Fix lint
Co-authored-by: Victor Malai <victormalai@Victors-MacBook-Pro.local>
diff --git a/superset/viz.py b/superset/viz.py
index 49775b3..face56f 100644
--- a/superset/viz.py
+++ b/superset/viz.py
@@ -998,7 +998,6 @@
return None
form_data = self.form_data
-
data = {}
records = df.to_dict("records")
for metric in self.metric_labels:
@@ -1029,7 +1028,7 @@
diff_secs = (end - start).total_seconds()
if domain == "year":
- range_ = diff_delta.years + 1
+ range_ = end.year - start.year + 1
elif domain == "month":
range_ = diff_delta.years * 12 + diff_delta.months + 1
elif domain == "week":
@@ -1051,6 +1050,19 @@
d = super().query_obj()
fd = self.form_data
d["metrics"] = fd.get("metrics")
+ mapping = {
+ "min": "PT1M",
+ "hour": "PT1H",
+ "day": "P1D",
+ "week": "P1W",
+ "month": "P1M",
+ "year": "P1Y",
+ }
+ time_grain = mapping[fd.get("subdomain_granularity", "min")]
+ if self.datasource.type == "druid":
+ d["granularity"] = time_grain
+ else:
+ d["extras"]["time_grain_sqla"] = time_grain
return d