Problem.
How did advanced economies respond to the 2008 to 2010 global financial crisis, and what shape were they in entering 2020? This is a question macroeconomists answer through long-form papers and IMF reports.
I wanted to see whether a single-screen Power BI report could carry enough signal to be useful as a briefing surface for someone who does not read those papers. The constraint of "one screen, no scrolling" forces every visual to earn its place.
My contribution.
Single-screen Power BI report plus a Python validator, owned solo:
- Sourced 20 years of IMF World Economic Outlook data (October 2021 vintage), filtered down to the 26 high-income economies that report consistently across the entire 2001 to 2020 window. Selection rule is documented and reproducible.
- Star-schema data model with an
IMF_Completefact table (520 fact rows, 26 countries x 20 years) joined many-to-one against aCountryGroupingsdimension carrying World Bank region and income classifications. - Eight core indicators (GDP growth, government debt as percent of GDP, inflation, unemployment, current account balance, gross national savings, broad money, and total investment) feeding nine DAX measures.
- A
Metric Selectorfield parameter exposing those eight indicators through a single dropdown, so the same visual pivots across all of them. - Crisis-window highlighting on the temporal visuals: 2008 to 2010 and 2020 are visually emphasised so the shock-and-recovery pattern is immediate.
- Python companion validator (pandas + openpyxl + pytest) with CI. Every dataset descriptor cited in the README is asserted against the actual xlsx contents on every push.
Data model.
+----------------------+ +-----------------------+ | IMF_Complete | many-to-1 | CountryGroupings | |----------------------|------------- |-----------------------| | ISO (FK) | on ISO | Code (PK) | | Country | | Economy | | Year | | Region | | 8 core indicators | | Income group | +----------------------+ +-----------------------+ 26 countries x 20 yrs 218 reference rows = 520 fact rows
What the dashboard surfaces.
The economies that recovered fastest from 2008 to 2010 were not always the ones that entered 2020 strongest. There is a slow, structural drift across the dataset. Some economies took on debt during 2008 and never fully unwound it before 2020, which constrained their fiscal response to the next shock. The dashboard makes this visible at a glance through the comparative debt-trajectory views.
The country-comparison view lets you slice any subset of the 26 economies side by side. For policy briefings on a specific peer group (G7, EU-27 subset, Anglosphere), this is the answer to "show me how these countries compare across all eight indicators in one screen".
Why this is in the portfolio as a BI showcase.
Most of my work surfaces as code or pipelines. This is the counterweight: evidence that I can deliver an analytical surface for non-technical decision-makers, with the data model, DAX measures, and visual hierarchy all designed for a single-screen briefing.
The Python validator is the bridge back to engineering discipline. A dashboard that claims "26 high-income economies" is a dashboard that should fail CI if you ever swap the dataset and the count changes. The validator does exactly that.
The .pbix file is in the repo for anyone who wants to open it in Power BI Desktop (free download from Microsoft) and explore.
Stack.
Power BI Desktop · DAX · Power Query · field parameters · IMF World Economic Outlook (October 2021) · World Bank country and region classifications · Python (pandas, openpyxl, pytest) · GitHub Actions