mirror of https://github.com/apache/superset.git
FilterBox,BigNumber,WorldMap: Handle empty results - second attempt (#9789)
* FilteBox: handle empty results (second attempt) This change was originally attempted in #9671 but reverted since it broke FilterBox charts with only a time selector. After some tests I reworked the patch to avoid returning None, but instead returning an empty list for each col/selector with an empty dataframe associated. This allows to see all the selectors without any breakage. * BigNumberViz: avoid user facing errors when the dataframe is empty * WorldMapViz: avoid user facing errors when the dataframe is empty
This commit is contained in:
parent
ea9b7f2dc4
commit
5ab5457522
|
@ -1133,6 +1133,9 @@ class BigNumberViz(BaseViz):
|
||||||
return d
|
return d
|
||||||
|
|
||||||
def get_data(self, df: pd.DataFrame) -> VizData:
|
def get_data(self, df: pd.DataFrame) -> VizData:
|
||||||
|
if df.empty:
|
||||||
|
return None
|
||||||
|
|
||||||
df = df.pivot_table(
|
df = df.pivot_table(
|
||||||
index=DTTM_ALIAS,
|
index=DTTM_ALIAS,
|
||||||
columns=[],
|
columns=[],
|
||||||
|
@ -1868,6 +1871,9 @@ class WorldMapViz(BaseViz):
|
||||||
return qry
|
return qry
|
||||||
|
|
||||||
def get_data(self, df: pd.DataFrame) -> VizData:
|
def get_data(self, df: pd.DataFrame) -> VizData:
|
||||||
|
if df.empty:
|
||||||
|
return None
|
||||||
|
|
||||||
from superset.examples import countries
|
from superset.examples import countries
|
||||||
|
|
||||||
fd = self.form_data
|
fd = self.form_data
|
||||||
|
@ -1942,7 +1948,7 @@ class FilterBoxViz(BaseViz):
|
||||||
col = flt.get("column")
|
col = flt.get("column")
|
||||||
metric = flt.get("metric")
|
metric = flt.get("metric")
|
||||||
df = self.dataframes.get(col)
|
df = self.dataframes.get(col)
|
||||||
if df is not None:
|
if df is not None and not df.empty:
|
||||||
if metric:
|
if metric:
|
||||||
df = df.sort_values(
|
df = df.sort_values(
|
||||||
utils.get_metric_name(metric), ascending=flt.get("asc")
|
utils.get_metric_name(metric), ascending=flt.get("asc")
|
||||||
|
@ -1957,6 +1963,8 @@ class FilterBoxViz(BaseViz):
|
||||||
{"id": row[0], "text": row[0]}
|
{"id": row[0], "text": row[0]}
|
||||||
for row in df.itertuples(index=False)
|
for row in df.itertuples(index=False)
|
||||||
]
|
]
|
||||||
|
else:
|
||||||
|
df[col] = []
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue