Hello @tyankata,
In case, you still require a DAX based solution then here’re the formula’s. In the form of both i.e., “Calculated Columns” and “Measures” -
A). Calculated Columns -
1). Based on No. of Days logic i.e., 1095 Days -
Customer Status (by Days) - DAX =
VAR _Current_Customer_ID =
Data[Customer_ID]
VAR _Current_Purchase_Date =
Data[Purchase_Date]
VAR _Days_Difference =
IF(
ISBLANK( CALCULATE( MAX( Data[Purchase_Date] ) ,
FILTER( Data ,
Data[Customer_ID] = _Current_Customer_ID &&
Data[Purchase_Date] < _Current_Purchase_Date ) ) ) ,
BLANK() ,
Data[Purchase_Date] -
CALCULATE( MAX( Data[Purchase_Date] ) ,
FILTER( Data ,
Data[Customer_ID] = _Current_Customer_ID &&
Data[Purchase_Date] < _Current_Purchase_Date ) ) )
VAR _Results =
SWITCH( TRUE() ,
_Days_Difference = BLANK() , "New" ,
_Days_Difference <= 1095 , "Repeater" ,
_Days_Difference > 1095 , "Reactivated" )
RETURN
_Results
2). Based on No. of Years logic i.e., 3 Years -
Customer Status (by Years) - DAX =
VAR _Current_Customer_ID =
Data[Customer_ID]
VAR _Current_Purchase_Date =
Data[Purchase_Date]
VAR _Next_Purchase_Date =
CALCULATE( MAX( Data[Purchase_Date] ) ,
FILTER( Data ,
Data[Customer_ID] = _Current_Customer_ID &&
Data[Purchase_Date] < _Current_Purchase_Date ) )
VAR _Year_Difference =
DATEDIFF( Data[Purchase_Date] , _Next_Purchase_Date , YEAR )
VAR _Results =
SWITCH( TRUE() ,
_Year_Difference = BLANK() , "New" ,
_Year_Difference >= -2 , "Repeater" ,
_Year_Difference < -2 , "Reactivated" )
RETURN
_Results
B). Measures -
1). Based on No. of Days logic i.e., 1095 Days -
Customer Status (by Days) - DAX Measure =
VAR _Current_Customer_ID =
MIN( Data[Customer_ID] )
VAR _Current_Purchase_Date =
MIN( Data[Purchase_Date] )
VAR _Days_Difference =
IF(
ISBLANK( CALCULATE( MAX( Data[Purchase_Date] ) ,
FILTER( ALL( Data ) ,
Data[Customer_ID] = _Current_Customer_ID &&
Data[Purchase_Date] < _Current_Purchase_Date ) ) ) ,
BLANK() ,
CALCULATE( MIN( Data[Purchase_Date] ) ) -
CALCULATE( MAX( Data[Purchase_Date] ) ,
FILTER( ALL( Data ) ,
Data[Customer_ID] = _Current_Customer_ID &&
Data[Purchase_Date] < _Current_Purchase_Date ) ) )
VAR _Results =
IF( ISINSCOPE( Data[Customer_ID] ) ,
SWITCH( TRUE() ,
_Days_Difference = BLANK() , "New" ,
_Days_Difference <= 1095 , "Repeater" ,
_Days_Difference > 1095 , "Reactivated" ) )
RETURN
_Results
Customer Status (by Years) - DAX Measure =
VAR _Current_Customer_ID =
MIN( Data[Customer_ID] )
VAR _Current_Purchase_Date =
MIN( Data[Purchase_Date] )
VAR _Next_Purchase_Date =
CALCULATE( MAX( Data[Purchase_Date] ) ,
FILTER( ALL( Data ) ,
Data[Customer_ID] = _Current_Customer_ID &&
Data[Purchase_Date] < _Current_Purchase_Date ) )
VAR _Year_Difference =
DATEDIFF( MIN( Data[Purchase_Date] ) , _Next_Purchase_Date , YEAR )
VAR _Results =
IF( ISINSCOPE( Data[Customer_ID] ) ,
SWITCH( TRUE() ,
_Year_Difference = BLANK() , "New" ,
_Year_Difference >= -2 , "Repeater" ,
_Year_Difference < -2 , "Reactivated" ) )
RETURN
_Results
Below is the screenshot of the final results provided -
I’m also attaching the working of the PBIX file for the reference purposes.
Thanks and Warm Regards,
Harsh
Customer Segmentation - Harsh v2.pbix (126.3 KB)