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

Join us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.

Reply
Anonymous
Not applicable

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
Anonymous
Not applicable

HI @Anonymous ,

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

View solution in original post

2 REPLIES 2
Anonymous
Not applicable

HI @Anonymous ,

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

Anonymous
Not applicable

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
Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

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

June 2025 community update carousel

Fabric Community Update - June 2025

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