Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

View all the Fabric Data Days sessions on demand. View schedule

Reply
CSpina
Helper III
Helper III

Count customers per periods with different rules - churn

Hi, guys and girls.

 

I need to create a measure to calculate the customers churn. Using IF it´s ok. 

 

varResultadoAtual > 0 &&
varResultadoMesPosterior = 0 &&
varResultadoPeriodo = 0

 

Customer Churn 2 = 
VAR varSalesActualMonth = [Sales] 
VAR varSalesNextMonth = [Sales Next Month]
VAR varSalesPerPeriod = [Sales Period] // what if 1 to 12 months
RETURN
IF(
    varSalesActualMonth > 0 && varSalesNextMonth = 0 && varSalesPerPeriod = 0,
    1,
    BLANK()
)

 I already calculate 1 month churn

 

Customer Churn =
VAR varCustomersTotal = VALUES('fSales'[CustomerID])
VAR varCustomersPerPeriod=
CALCULATETABLE(
VALUES('fSales'[CustomerID]),
DATESINPERIOD(
'dCalendar'[Date],
MIN('dCalendar'[Date]) -1,
-1,
YEAR)
)
RETURN
COUNTROWS(EXCEPT(varCustomersPerPeriod, varCustomersTotal )

 

Any idea?

 

Thanks.

1 ACCEPTED SOLUTION
CSpina
Helper III
Helper III

Customers Churn = 
VAR varActualCustomers = VALUES('fSales'[IDCustomer])
VAR varCPeriodCustomers =
CALCULATETABLE(
    VALUES('fSales'[IDCustomer]),
    DATESINPERIOD(
        'dCalendar'[Data],
        DATEADD(NEXTDAY('dCalendar'[Date]), -1 * ([Period] + 1), MONTH),
        [Period], // (what if 1-12)
        MONTH
    )
)
VAR varClustomersNextMonth = 
CALCULATETABLE(
    VALUES('fSales'[IDCustomer]),
    DATEADD('dCalendar'[Date], +1, MONTH)
)
RETURN
COUNTROWS(EXCEPT(varActualCustomers, UNION(varCPeriodCustomers, varClustomersNextMonth)))

View solution in original post

2 REPLIES 2
CSpina
Helper III
Helper III

Customers Churn = 
VAR varActualCustomers = VALUES('fSales'[IDCustomer])
VAR varCPeriodCustomers =
CALCULATETABLE(
    VALUES('fSales'[IDCustomer]),
    DATESINPERIOD(
        'dCalendar'[Data],
        DATEADD(NEXTDAY('dCalendar'[Date]), -1 * ([Period] + 1), MONTH),
        [Period], // (what if 1-12)
        MONTH
    )
)
VAR varClustomersNextMonth = 
CALCULATETABLE(
    VALUES('fSales'[IDCustomer]),
    DATEADD('dCalendar'[Date], +1, MONTH)
)
RETURN
COUNTROWS(EXCEPT(varActualCustomers, UNION(varCPeriodCustomers, varClustomersNextMonth)))
amitchandak
Super User
Super User

@CSpina , the Requirement is not clear. Can you explain that.

 

refer

 

Customer Retention Part 1:
https://community.powerbi.com/t5/Community-Blog/Customer-Retention-Part-1-Month-on-Month-Retention/b...
Customer Retention Part 2: Period over Period Retention:https://community.powerbi.com/t5/Community-Blog/Customer-Retention-Part-2-Period-over-Period-Retenti...

 

 

Share with Power BI Enthusiasts: Full Power BI Video (20 Hours) YouTube
Microsoft Fabric Series 60+ Videos YouTube
Microsoft Fabric Hindi End to End YouTube

Helpful resources

Announcements
November Power BI Update Carousel

Power BI Monthly Update - November 2025

Check out the November 2025 Power BI update to learn about new features.

Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.

Top Solution Authors
Top Kudoed Authors