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

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

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
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel1

Power BI Monthly Update - May 2024

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