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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
QuantusPools
Frequent Visitor

Calculated Column - New / Lost / Existing Customer

 

VAR CurrentYear = YEAR(TODAY())
VAR LastYear = CurrentYear - 1
VAR CurrentYearSales = CALCULATE(SUM(Sales[Subtotal]), FILTER(Sales, YEAR(Sales[Completion Date]) = CurrentYear))
VAR LastYearSales = CALCULATE(SUM(Sales[Subtotal]), FILTER(Sales, YEAR(Sales[Completion Date]) = LastYear))
RETURN
    IF(
        CurrentYearSales > 0 && LastYearSales > 0,
        "Current",
        IF(
            CurrentYearSales > 0 && LastYearSales = 0,
            "New",
            IF(
                CurrentYearSales = 0 && LastYearSales > 0,
                "Lost",
                ""
            )
        )
    )

 

 

Customer NameCompletion DateSubtotalCustomer Status

Customer 1

1/13/2022$55.00

Current

Customer 15/5/2023$780.00Current
Customer 15/9/2022$654.60Current
Customer 25/12/2022$247.15Lost
Customer 25/20/2022$204.72Lost
Customer 25/26/2022$0.00Lost
Customer 35/23/2023$153.00New
Customer 35/26/2023$153.00New
Customer 36/13/2023$0.00New

 

I'm wanting to use a calculated column so I can use it as a filter.

 

I want the output to be

 

Current customer - Sales last year AND this year

New Customer - Sales ONLY this year

Lost Customer - Sales ONLY last year

 

 

I added the "Customer Status" column to my sample data as that is what I want my output to be.  The current posted formula only outputs "Current" customer.  Not sure why that is happening.  Any help?

1 ACCEPTED SOLUTION
QuantusPools
Frequent Visitor

I figured it out (well chatGPT did 😂).  Just had to ask a more detailed question.

Customer Status =
VAR CurrentYear = YEAR(TODAY())
VAR LastYear = CurrentYear - 1
VAR CustomerID = [Customer ID]  // Replace [Customer ID] with your actual customer identifier column name

RETURN
    IF(
        CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = CurrentYear), Sales[Customer ID] = CustomerID) > 0 &&
        CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = LastYear), Sales[Customer ID] = CustomerID) > 0,
        "Current",
        IF(
            CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = CurrentYear), Sales[Customer ID] = CustomerID) > 0 &&
            CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = LastYear), Sales[Customer ID] = CustomerID) = 0,
            "New",
            IF(
                CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = CurrentYear), Sales[Customer ID] = CustomerID) = 0 &&
                CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = LastYear), Sales[Customer ID] = CustomerID) > 0,
                "Lost",
                ""
            )
        )
    )

 

 

View solution in original post

2 REPLIES 2
QuantusPools
Frequent Visitor

I figured it out (well chatGPT did 😂).  Just had to ask a more detailed question.

Customer Status =
VAR CurrentYear = YEAR(TODAY())
VAR LastYear = CurrentYear - 1
VAR CustomerID = [Customer ID]  // Replace [Customer ID] with your actual customer identifier column name

RETURN
    IF(
        CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = CurrentYear), Sales[Customer ID] = CustomerID) > 0 &&
        CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = LastYear), Sales[Customer ID] = CustomerID) > 0,
        "Current",
        IF(
            CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = CurrentYear), Sales[Customer ID] = CustomerID) > 0 &&
            CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = LastYear), Sales[Customer ID] = CustomerID) = 0,
            "New",
            IF(
                CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = CurrentYear), Sales[Customer ID] = CustomerID) = 0 &&
                CALCULATE(COUNTROWS(Sales), FILTER(Sales, YEAR(Sales[Completion Date]) = LastYear), Sales[Customer ID] = CustomerID) > 0,
                "Lost",
                ""
            )
        )
    )

 

 

Ahmedx
Super User
Super User

ased on your description, I created data to reproduce your scenario. The pbix file is attached in the end.

New-Lost - Existing Customer.pbix

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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