diff --git a/dashed/bin/dashed b/dashed/bin/dashed index ac47bb6e9f55..9640a49c5c10 100755 --- a/dashed/bin/dashed +++ b/dashed/bin/dashed @@ -61,6 +61,9 @@ def load_examples(sample): data.load_css_templates() + print("Loading energy related dataset") + data.load_energy() + print("Loading [World Bank's Health Nutrition and Population Stats]") data.load_world_bank_health_n_pop() diff --git a/dashed/data/__init__.py b/dashed/data/__init__.py index 348a14ebb6d3..5e1a4938b030 100644 --- a/dashed/data/__init__.py +++ b/dashed/data/__init__.py @@ -6,7 +6,7 @@ import textwrap import pandas as pd -from sqlalchemy import String, DateTime +from sqlalchemy import String, DateTime, Float from dashed import app, db, models, utils @@ -47,6 +47,65 @@ def get_slice_json(defaults, **kwargs): return json.dumps(d, indent=4, sort_keys=True) +def load_energy(): + """Loads an energy related dataset to use with sankey and graphs""" + tbl_name = 'energy_usage' + with gzip.open(os.path.join(DATA_FOLDER, 'energy.json.gz')) as f: + pdf = pd.read_json(f) + pdf.to_sql( + tbl_name, + db.engine, + if_exists='replace', + chunksize=500, + dtype={ + 'source': String(255), + 'target': String(255), + 'value': Float(), + }, + index=False) + + print("Creating table [wb_health_population] reference") + tbl = db.session.query(TBL).filter_by(table_name=tbl_name).first() + if not tbl: + tbl = TBL(table_name=tbl_name) + tbl.description = "Energy consumption" + tbl.is_featured = True + tbl.database = get_or_create_db(db.session) + db.session.merge(tbl) + db.session.commit() + tbl.fetch_metadata() + + merge_slice( + Slice( + slice_name="Energy Sankey", + viz_type='sankey', + datasource_type='table', + table=tbl, + params=textwrap.dedent("""\ + { + "collapsed_fieldsets": "", + "datasource_id": "3", + "datasource_name": "energy_usage", + "datasource_type": "table", + "flt_col_0": "source", + "flt_eq_0": "", + "flt_op_0": "in", + "groupby": [ + "source", + "target" + ], + "having": "", + "metric": "sum__value", + "row_limit": "5000", + "slice_id": "", + "slice_name": "Energy Sankey", + "viz_type": "sankey", + "where": "" + } + """)) + ) + + def load_world_bank_health_n_pop(): """Loads the world bank health dataset, slices and a dashboard""" tbl_name = 'wb_health_population' diff --git a/dashed/data/energy.json.gz b/dashed/data/energy.json.gz new file mode 100644 index 000000000000..b2f47a148b4f Binary files /dev/null and b/dashed/data/energy.json.gz differ