You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by hu...@apache.org on 2022/08/11 16:08:47 UTC
[superset] branch master updated: fix: take form_data reference for metrics for pivot_v2 table reports (#21029)
This is an automated email from the ASF dual-hosted git repository.
hugh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new e13c5b2b7b fix: take form_data reference for metrics for pivot_v2 table reports (#21029)
e13c5b2b7b is described below
commit e13c5b2b7b1be52e74643981990eb646ccc76d20
Author: Hugh A. Miles II <hu...@gmail.com>
AuthorDate: Thu Aug 11 12:08:40 2022 -0400
fix: take form_data reference for metrics for pivot_v2 table reports (#21029)
* take form_data reference for form_data
* better
* remove comments
* remove comments
* Update superset/charts/post_processing.py
Co-authored-by: Beto Dealmeida <ro...@dealmeida.net>
* add test
* test
Co-authored-by: Beto Dealmeida <ro...@dealmeida.net>
---
superset/charts/post_processing.py | 4 ++
tests/unit_tests/charts/test_post_processing.py | 68 +++++++++++++++++++++++++
2 files changed, 72 insertions(+)
diff --git a/superset/charts/post_processing.py b/superset/charts/post_processing.py
index 81d2a09b04..ffd8becdde 100644
--- a/superset/charts/post_processing.py
+++ b/superset/charts/post_processing.py
@@ -336,6 +336,10 @@ def apply_post_process(
elif query["result_format"] == ChartDataResultFormat.CSV:
df = pd.read_csv(StringIO(query["data"]))
+ # convert all columns to verbose (label) name
+ if datasource:
+ df.rename(columns=datasource.data["verbose_map"], inplace=True)
+
processed_df = post_processor(df, form_data, datasource)
query["colnames"] = list(processed_df.columns)
diff --git a/tests/unit_tests/charts/test_post_processing.py b/tests/unit_tests/charts/test_post_processing.py
index 05d3fe6e0b..cfab4e3d74 100644
--- a/tests/unit_tests/charts/test_post_processing.py
+++ b/tests/unit_tests/charts/test_post_processing.py
@@ -20,6 +20,7 @@ import json
import pandas as pd
from numpy import True_
from pytest import raises
+from sqlalchemy.orm.session import Session
from superset.charts.post_processing import apply_post_process, pivot_df, table
from superset.common.chart_data import ChartDataResultFormat
@@ -1960,3 +1961,70 @@ def test_apply_post_process_json_format_data_is_none():
assert apply_post_process(result, form_data) == {
"queries": [{"result_format": ChartDataResultFormat.JSON, "data": None}]
}
+
+
+def test_apply_post_process_verbose_map(session: Session):
+ from superset.connectors.sqla.models import SqlaTable, SqlMetric
+ from superset.models.core import Database
+
+ engine = session.get_bind()
+ SqlaTable.metadata.create_all(engine) # pylint: disable=no-member
+ db = Database(database_name="my_database", sqlalchemy_uri="sqlite://")
+ sqla_table = SqlaTable(
+ table_name="my_sqla_table",
+ columns=[],
+ metrics=[
+ SqlMetric(
+ metric_name="count",
+ verbose_name="COUNT(*)",
+ metric_type="count",
+ expression="COUNT(*)",
+ )
+ ],
+ database=db,
+ )
+
+ result = {
+ "queries": [
+ {
+ "result_format": ChartDataResultFormat.JSON,
+ "data": [{"count": 4725}],
+ }
+ ]
+ }
+ form_data = {
+ "datasource": "19__table",
+ "viz_type": "pivot_table_v2",
+ "slice_id": 69,
+ "url_params": {},
+ "granularity_sqla": "time_start",
+ "time_grain_sqla": "P1D",
+ "time_range": "No filter",
+ "groupbyColumns": [],
+ "groupbyRows": [],
+ "metrics": ["COUNT(*)"],
+ "metricsLayout": "COLUMNS",
+ "row_limit": 10000,
+ "order_desc": True,
+ "valueFormat": "SMART_NUMBER",
+ "date_format": "smart_date",
+ "rowOrder": "key_a_to_z",
+ "colOrder": "key_a_to_z",
+ "extra_form_data": {},
+ "force": False,
+ "result_format": "json",
+ "result_type": "results",
+ }
+
+ assert apply_post_process(result, form_data, datasource=sqla_table) == {
+ "queries": [
+ {
+ "result_format": ChartDataResultFormat.JSON,
+ "data": {"COUNT(*)": {"Total (Sum)": 4725}},
+ "colnames": [("COUNT(*)",)],
+ "indexnames": [("Total (Sum)",)],
+ "coltypes": [GenericDataType.NUMERIC],
+ "rowcount": 1,
+ }
+ ]
+ }