Skip to content

Commit

Permalink
compile column names (#7646)
Browse files Browse the repository at this point in the history
  • Loading branch information
villebro authored Jun 19, 2019
1 parent cddce63 commit 43ea51b
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 5 deletions.
8 changes: 6 additions & 2 deletions superset/data/birth_names.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

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
Expand Down Expand Up @@ -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)
Expand Down
4 changes: 3 additions & 1 deletion superset/data/country_map.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

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
Expand Down Expand Up @@ -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()
Expand Down
4 changes: 3 additions & 1 deletion superset/data/energy.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

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
Expand Down Expand Up @@ -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)
Expand Down
5 changes: 4 additions & 1 deletion superset/data/world_bank.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

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
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 43ea51b

Please sign in to comment.