You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by vi...@apache.org on 2019/06/19 18:48:53 UTC
[incubator-superset] branch master updated: compile column names
(#7646)
This is an automated email from the ASF dual-hosted git repository.
villebro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push:
new 43ea51b compile column names (#7646)
43ea51b is described below
commit 43ea51b701a6df4a110d9ec70c34e19d517b90a4
Author: Ville Brofeldt <33...@users.noreply.github.com>
AuthorDate: Wed Jun 19 21:48:45 2019 +0300
compile column names (#7646)
---
superset/data/birth_names.py | 8 ++++++--
superset/data/country_map.py | 4 +++-
superset/data/energy.py | 4 +++-
superset/data/world_bank.py | 5 ++++-
4 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/superset/data/birth_names.py b/superset/data/birth_names.py
index 4f11ac5..85de019 100644
--- a/superset/data/birth_names.py
+++ b/superset/data/birth_names.py
@@ -19,6 +19,7 @@ import textwrap
import pandas as pd
from sqlalchemy import DateTime, String
+from sqlalchemy.sql import column
from superset import db, security_manager
from superset.connectors.sqla.models import SqlMetric, TableColumn
@@ -64,15 +65,18 @@ def load_birth_names():
obj.filter_select_enabled = True
if not any(col.column_name == 'num_california' for col in obj.columns):
+ col_state = str(column('state').compile(db.engine))
+ col_num = str(column('num').compile(db.engine))
obj.columns.append(TableColumn(
column_name='num_california',
- expression="CASE WHEN state = 'CA' THEN num ELSE 0 END",
+ expression=f"CASE WHEN {col_state} = 'CA' THEN {col_num} ELSE 0 END",
))
if not any(col.metric_name == 'sum__num' for col in obj.metrics):
+ col = str(column('num').compile(db.engine))
obj.metrics.append(SqlMetric(
metric_name='sum__num',
- expression='SUM(num)',
+ expression=f'SUM({col})',
))
db.session.merge(obj)
diff --git a/superset/data/country_map.py b/superset/data/country_map.py
index e74638b..303b85d 100644
--- a/superset/data/country_map.py
+++ b/superset/data/country_map.py
@@ -18,6 +18,7 @@ import datetime
import pandas as pd
from sqlalchemy import BigInteger, Date, String
+from sqlalchemy.sql import column
from superset import db
from superset.connectors.sqla.models import SqlMetric
@@ -69,9 +70,10 @@ def load_country_map_data():
obj.main_dttm_col = 'dttm'
obj.database = utils.get_or_create_main_db()
if not any(col.metric_name == 'avg__2004' for col in obj.metrics):
+ col = str(column('2004').compile(db.engine))
obj.metrics.append(SqlMetric(
metric_name='avg__2004',
- expression='AVG(2004)',
+ expression=f'AVG({col})',
))
db.session.merge(obj)
db.session.commit()
diff --git a/superset/data/energy.py b/superset/data/energy.py
index e1d48e7..293dca5 100644
--- a/superset/data/energy.py
+++ b/superset/data/energy.py
@@ -20,6 +20,7 @@ import textwrap
import pandas as pd
from sqlalchemy import Float, String
+from sqlalchemy.sql import column
from superset import db
from superset.connectors.sqla.models import SqlMetric
@@ -54,9 +55,10 @@ def load_energy():
tbl.database = utils.get_or_create_main_db()
if not any(col.metric_name == 'sum__value' for col in tbl.metrics):
+ col = str(column('value').compile(db.engine))
tbl.metrics.append(SqlMetric(
metric_name='sum__value',
- expression='SUM(value)',
+ expression=f'SUM({col})',
))
db.session.merge(tbl)
diff --git a/superset/data/world_bank.py b/superset/data/world_bank.py
index 94aa468..d5370ec 100644
--- a/superset/data/world_bank.py
+++ b/superset/data/world_bank.py
@@ -22,6 +22,7 @@ import textwrap
import pandas as pd
from sqlalchemy import DateTime, String
+from sqlalchemy.sql import column
from superset import db
from superset.connectors.sqla.models import SqlMetric
@@ -75,9 +76,11 @@ def load_world_bank_health_n_pop():
]
for m in metrics:
if not any(col.metric_name == m for col in tbl.metrics):
+ aggr_func = m[:3]
+ col = str(column(m[5:]).compile(db.engine))
tbl.metrics.append(SqlMetric(
metric_name=m,
- expression=f'{m[:3]}({m[5:]})',
+ expression=f'{aggr_func}({col})',
))
db.session.merge(tbl)