Case study 01 · Customer analytics · Power BI

Why 1 in 5 customers leave a retail bank.

10,000 customers, twelve attributes each, one question from the retention team: who is about to walk, and what would keep them? The dashboard below is live. Filter it by region or segment and every number recomputes from the row-level data in your browser.

RoleAnalysis, modeling, dashboard design
ToolsSQL · Power BI · DAX
Dataset10,000 rows · seeded synthetic
Live · recomputes in your browser

The retention dashboard.

This mirrors the Power BI report, page for page: same measures, same layout logic. Try Southeast plus Everyday banking, or Student on its own.

Region
Segment
Customers in view
Churn rate
Balance at risk
held by churned customers
Median tenure
months with the bank
Churn rate by tenure
First-year customers are the leak. Rate falls with every year of tenure.
Churned vs retained
Share of customers in the current view
Churn rate by products held
One product means one foot out the door
Churn rate by complaints, past 12 months
The single loudest signal in the dataset
Churn rate by region and segment
Rates across the full book, independent of the filters above
What the data says

Three findings, one recommendation.

01

Complaints are the alarm bell, not a nuisance metric.

Customers with two or more complaints in the past year churn at roughly four times the base rate. A complaint is the last conversation before the exit, and the data shows the bank usually gets exactly one chance to fix it.

02

The first twelve months decide the relationship.

Churn among customers under a year of tenure runs far above the book average, then drops sharply after year two. Onboarding is not a courtesy email; it is the single best retention window the bank has.

03

Single-product customers are renters, not owners.

Holding one product doubles churn risk versus holding three or more. Every additional product deepens the switching cost. Cross-sell is usually pitched as revenue; here it is retention insurance.

Recommendation

Stand up a 90-day onboarding journey for new customers, trigger a save-desk call within 48 hours of any second complaint, and target single-product customers over 24 months of tenure with one relevant cross-sell. Scored against this book, those three moves address the segments holding the majority of the balance at risk.

The Power BI build

Same analysis, production tooling.

The dashboard above is the design spec; the Power BI report is the deliverable. Star schema with a customer fact table, a date dimension, and disconnected filter tables for the slicers. The measures below drive every visual.

Core DAX measures
-- headline rate
Churn Rate =
DIVIDE (
    CALCULATE ( COUNTROWS ( Customers ),
        Customers[churned] = 1 ),
    COUNTROWS ( Customers )
)

-- money walking out the door
Balance at Risk =
CALCULATE ( SUM ( Customers[balance_usd] ),
    Customers[churned] = 1 )

-- lift vs the whole book
Churn Rate Lift =
[Churn Rate]
    - CALCULATE ( [Churn Rate], ALL ( Customers ) )
The SQL behind the extract
-- tenure-band churn, the chart that led the readout
SELECT
    CASE
        WHEN tenure_months <= 12  THEN '0-12'
        WHEN tenure_months <= 24  THEN '13-24'
        WHEN tenure_months <= 60  THEN '25-60'
        WHEN tenure_months <= 120 THEN '61-120'
        ELSE '120+'
    END                        AS tenure_band,
    COUNT(*)                   AS customers,
    AVG(churned * 100.0)       AS churn_rate_pct,
    SUM(balance_usd * churned) AS balance_at_risk
FROM customers
GROUP BY 1
ORDER BY MIN(tenure_months);
← All case studies Next · Card fraud monitoring