Forum Discussion
calculating churn
- Anonymous2 years ago
Hi mazwro ,
Thanks for the reply from MattAllington .
Please try:
Create a calculated column that considers a customer churned if they have not made a purchase within the past 12 months of the maximum date in the data set.
IsChurned = var PY = CALCULATE( MAX('Table'[order_YM]), DATESINPERIOD( 'Table'[OrderDate], MAX('Table'[OrderDate]), -12,MONTH) ) RETURN IF(PY = BLANK(),"Churned", "Active")Create a measure to calculate the number of churned customers:
Count = CALCULATE( COUNTROWS('Table'), 'Table'[IsChurned] = "Churned", ALLEXCEPT('Table', 'Table'[order_YM]) )If the problem is not solved successfully, I would be grateful if you could provide me with the pbix file or sample data.
Remember to remove sensitive data and do not log in to your account in Power BI Desktop when uploading the pbix file.
If you have any other questions please feel free to contact me.
The pbix file is attached.
Best Regards,
Yang
Community Support TeamIf there is any post helps, then please consider Accept it as the solution to help the other members find it more quickly.
If I misunderstand your needs or you still have problems on it, please feel free to let us know. Thanks a lot! - Anonymous2 years ago
Hi mazwro ,
Thanks for the reply from MattAllington .
This formula returns the churn rate for the last 12 months for the maximum date in your table.
If you have any other questions please feel free to contact me.
Best Regards,
Yang
Community Support TeamIf there is any post helps, then please consider Accept it as the solution to help the other members find it more quickly.
If I misunderstand your needs or you still have problems on it, please feel free to let us know. Thanks a lot!
This is how you do it https://www.daxpatterns.com/new-and-returning-customers/
thanks MattAllington , I am having trouble with this article - I made a script like the following, but i dont know where to take [Date Lost Customer]:
# Lost Customers =
VAR LastDateLost =
CALCULATE (
MAX ( 'nh churned'[OrderDate].[Date] ),
ALLSELECTED ( 'nh churned'[OrderDate].[Date] )
)
VAR CustomersWithLostDate =
CALCULATETABLE ( -- Prepares a table that
ADDCOLUMNS ( -- for each customer contains
VALUES ( 'nh churned'[client_ID] ), -- the date when they are considered lost
"@LostCustomerDate", [Date Lost Customer]
),
ALLEXCEPT ( 'nh churned', 'nh churned'[client_ID] ),
'nh churned'[OrderDate].[Date] <= LastDateLost
)
VAR LostCustomers =
FILTER (
CustomersWithLostDate, -- Filters the customers
[@LostCustomerDate] -- whose lost customer date
IN VALUES ( 'nh churned'[OrderDate].[Date] ) -- fall within the current period
)
VAR Result =
COUNTROWS ( LostCustomers ) -- The count of the lost customers does not
-- use the Sales table (no sales in the period)
RETURN
Result- MattAllington2 years agoCommunity Champion
If you are going to follow the pattern, you need to do it exactly as shown. It looks like from your formulas that you don't have a calendar table. It's not going to work without that.
I can tell you that I copied the table structure and formulas, and it worked for me.
- mazwro2 years agoHelper II
I changed the data to the dates from the date table, still getting an errror with [Date Lost customer] - I dint know where I should get it from
# Lost Customers = VAR LastDateLost = CALCULATE ( MAX ( 'Dim_Date'[Date] ), ALLSELECTED ( 'Dim_Date'[Date] ) ) VAR CustomersWithLostDate = CALCULATETABLE ( -- Prepares a table that ADDCOLUMNS ( -- for each customer contains VALUES ( 'nh churned'[client_ID] ), -- the date when they are considered lost "@LostCustomerDate", [Date Lost Customer] ), ALLEXCEPT ( 'nh churned', 'nh churned'[client_ID] ), 'Dim_Date'[Date] <= LastDateLost ) VAR LostCustomers = FILTER ( CustomersWithLostDate, -- Filters the customers [@LostCustomerDate] -- whose lost customer date IN VALUES ( 'Dim_Date'[Date] ) -- fall within the current period ) VAR Result = COUNTROWS ( LostCustomers ) -- The count of the lost customers does not -- use the Sales table (no sales in the period) RETURN Result- MattAllington2 years agoCommunity Champion
Debugging DAX is a structured process.
1. Set up a matrix and add some relevant data, maybe year and month2. Add the measures that seem to work and make sure they look correct
3. Add the measure that doesn't work. Read the error message; it's the best insight into what is happening.