Forum Discussion

Andrew_na_lang's avatar
3 years ago
Solved

RETENTION

Hi Fam, I am working on a retention chart. The idea is to know on a daily basis how many customers are churned and retained.  The logic is:  Customers who ordered between day-60 to day-31 ag...
  • Anonymous's avatar
    Anonymous
    3 years ago

    Hi Andrew_na_lang ,

    Please have a try.

    Retention =
    VAR SelectedDateRange = SELECTEDVALUE('Date'[Date])
    VAR Today = TODAY()
    VAR DaysBetween = DATEDIFF(EARLIER('Orders'[time_pickup_date]), Today, DAY)
    VAR RetainedCustomers =
        CALCULATE(
            DISTINCTCOUNT('Orders'[customer_id]),
            FILTER(
                'Orders',
                DaysBetween >= 31
                    && DaysBetween <= 60
                    && 'Orders'[time_pickup_date] >= SelectedDateRange - 30
                    && 'Orders'[time_pickup_date] <= SelectedDateRange - 1
            )
        )
    VAR ChurnedCustomers =
        CALCULATE(
            DISTINCTCOUNT('Orders'[customer_id]),
            FILTER(
                'Orders',
                DaysBetween >= 31
                    && DaysBetween <= 60
                    && ('Orders'[time_pickup_date] < SelectedDateRange - 30 || 'Orders'[time_pickup_date] > SelectedDateRange - 1)
            )
        )
    RETURN
        SWITCH(
            TRUE(),
            RetainedCustomers = 0 && ChurnedCustomers = 0, BLANK(),
            RetainedCustomers = 0, "Churned",
            ChurnedCustomers = 0, "Retained",
            RetainedCustomers, "Retained",
            "Churned"
        )

     

    How to Get Your Question Answered Quickly 

     

    If it does not help, please provide more details with your desired output and pbix file without privacy information (or some sample data) .

     

    Best Regards
    Community Support Team _ Rongtie

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.