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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
cgoldstein
Frequent Visitor

Perform Calculation at Specified Level - Customer Churn

Hello!

 

I am new to DAX and looking for any assistance in writing a formula to calculate customer churn. I have one large fact table that contains all data required for this calculation (below).

 

There is more information available in the table then is needed to perform the calculation (i.e. there is a specific dimension that Churn needs to be calculated).

 

This is the dimension I would like to do the calculation:

@ the "Product Group_cd", "Location_Channel_cd", "AssignedSalesPersonName" level

Calculation being if one of the above purchased a unit this month, but did not last year in the same month, then "New Customer"

If one af the above purchased a unit last month py but not this month, the "Lost"

Otherwise "Retained"

 

Any help would be greatly appreciated! 

 

SalecCurrent.PNG

 

 

 

 

 

 

1 ACCEPTED SOLUTION
v-shex-msft
Community Support
Community Support

HI @cgoldstein ,

You can try to use following measure to check current row status:

Measure =
VAR currDate =
    MAX ( Table[Date] )
VAR LYDate =
    DATE ( YEAR ( currDate ) - 1, MONTH ( currDate ), DAY ( currDate ) )
VAR LYPurchased =
    CALCULATE (
        COUNTROWS ( Table ),
        FILTER (
            ALLSELECTED ( Table ),
            FORMAT ( Table[Date], "mm/yyyy" ) = FORMAT ( LYDate, "mm/yyyy" )
        ),
        VALUES ( Table[Product Group_cd] ),
        VALUES ( Table[Location_Channel_cd] ),
        VALUES ( Table[AssignedSalesPersonName] )
    )
VAR prevDate =
    CALCULATE (
        MAX ( Table[Date] ),
        FILTER ( ALLSELECTED ( Table ), [Date] < currDate ),
        VALUES ( Table[Product Group_cd] ),
        VALUES ( Table[Location_Channel_cd] ),
        VALUES ( Table[AssignedSalesPersonName] )
    )
RETURN
    IF (
        LYPurchased > 0,
        IF (
            FORMAT ( prevDate, "mm/yyyy" ) = FORMAT ( currDate, "mm/yyyy" ),
            "Retained",
            "Lost"
        ),
        "New Customer"
    )

If above not help, please share some sample data for test.

Regards,

Xiaoxin Sheng

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.

View solution in original post

2 REPLIES 2
v-shex-msft
Community Support
Community Support

HI @cgoldstein ,

You can try to use following measure to check current row status:

Measure =
VAR currDate =
    MAX ( Table[Date] )
VAR LYDate =
    DATE ( YEAR ( currDate ) - 1, MONTH ( currDate ), DAY ( currDate ) )
VAR LYPurchased =
    CALCULATE (
        COUNTROWS ( Table ),
        FILTER (
            ALLSELECTED ( Table ),
            FORMAT ( Table[Date], "mm/yyyy" ) = FORMAT ( LYDate, "mm/yyyy" )
        ),
        VALUES ( Table[Product Group_cd] ),
        VALUES ( Table[Location_Channel_cd] ),
        VALUES ( Table[AssignedSalesPersonName] )
    )
VAR prevDate =
    CALCULATE (
        MAX ( Table[Date] ),
        FILTER ( ALLSELECTED ( Table ), [Date] < currDate ),
        VALUES ( Table[Product Group_cd] ),
        VALUES ( Table[Location_Channel_cd] ),
        VALUES ( Table[AssignedSalesPersonName] )
    )
RETURN
    IF (
        LYPurchased > 0,
        IF (
            FORMAT ( prevDate, "mm/yyyy" ) = FORMAT ( currDate, "mm/yyyy" ),
            "Retained",
            "Lost"
        ),
        "New Customer"
    )

If above not help, please share some sample data for test.

Regards,

Xiaoxin Sheng

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.

Is this possible if I do not have a date table? The table above is the only table I have imported into powerquery.

 

 

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.