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

Calling all Data Engineers! Fabric Data Engineer (Exam DP-700) live sessions are back! Starting October 16th. Sign up.

Reply

Dynamically change how to define "New Customers" vs "Existing Customers" based on slicer

Hi everyone, 

 

I have a complicated question that I don't know how to begin to address. Every month, and every quarter, my boss would like a comparison on a variety of behaviors of "New Customers", those that became customers that particular month or quarter, compared to "Existing Customers", those that were customers prior to the time period in question. 

 

I've been creating a new calculated column each time period like "April New Customer?" labelling it New or Existing, but this isn't very sustainable. I would like to have this be dynamic, where I can have a slicer and the slicer determines which month qualifies as "New" and whatever came prior is "Existing". 

 

An example of a task is calculating Sales showing difference between New vs. Existing. 

 

I have a date table, and a user table. the User table has the column "First Completed Order Completed At" which signifies when someone became a customer. 

ruesaint_denis_0-1653409610607.png

 

Would anyone have any hints of how I can begin to address this? I can't share a sample of my data.

 

Thank you, 

 

Denisse

2 REPLIES 2
Whitewater100
Solution Sage
Solution Sage

Hi:

You can try this but changing field names to match yours. The Customer ID should come from your fact or transaction table. [Churn Time Value] is a parameter and I'll put that below. This distinquishes how to define new or lost.

 

New Customers = //calculating which customers within any particular month have purchased but haven't done so for the last x number of days
VAR CustomerTM = VALUES( Sales[Customer ID] )
VAR PriorCustomers = CALCULATETABLE( VALUES( Sales[Customer ID] ),
FILTER( ALL( Dates ),
Dates[Date] > MIN( Dates[Date] ) - [Churn Time Frame Value] &&
Dates[Date] < MIN( Dates[Date] ) ) )

RETURN
COUNTROWS(
EXCEPT( CustomerTM, PriorCustomers ) )
 
Whitewater100_0-1653412775100.png

Measure for churn time:

Churn Time Frame Value = SELECTEDVALUE('Churn Time Frame'[Churn Time Frame], 90)
 
New Customer Sales =
VAR CustomerTM = VALUES( Sales[Customer ID] )
VAR PriorCustomers = CALCULATETABLE( VALUES( Sales[Customer ID] ),
FILTER( ALL( Dates[Date] ),
Dates[Date] > MIN( Dates[Date] ) - [Churn Time Frame Value] &&
Dates[Date] <= MIN( Dates[Date] ) ) )

RETURN
CALCULATE( [Total Sales],
EXCEPT( CustomerTM, PriorCustomers ) )

Hi @Whitewater100 , I'm looking more for a dynamic labelling, where depending on the selected month or quarter, it decides what's New v. Existing: 

 

ruesaint_denis_0-1653413615401.png

 

Here I have my Total Sales measure, and I add a legend where it separates the sales by New v. Existing

Helpful resources

Announcements
FabCon Global Hackathon Carousel

FabCon Global Hackathon

Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!

September Power BI Update Carousel

Power BI Monthly Update - September 2025

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

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.