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

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
PaulCo
Helper II
Helper II

Weighted NPS Score

I am trying to create a measure that will calculate the weighted NPS score based on contract value (ACV).

 

I have a list of customers with their survey scores, null survey scores means there has not yet been a response. 

 

I have added a column to find out each customers average score. I want to use this average score to work out the number of detractors and promoters and then factor in the ACV as part of the measure. 

 

Promoters: 9-10

Detractors: 0-6

 

CustomerScoreAverage ScoreACV
A1010           90,720
B 10           69,738
B1010           69,738
C 6.7         122,580
C 6.7         122,580
C56.7         122,580
C76.7         122,580
C86.7         122,580
D88           16,800
E 10           39,120
E1010           39,120

 

In the above data table, the promoters are Customers A,B and E based off their average score.

The Detrator is Customer C.

 

The measure I want to show is:

 

(Promoter ACV - Detractor ACV) / Total ACV

 

((90,720 + 69,738 + 39,120 - 122,580) / 338,958)*100

 

22.7

 

Note that each customer ACV should be counted only once.

 

Thanks

1 ACCEPTED SOLUTION
Ashish_Mathur
Super User
Super User

Hi @PaulCo,

 

I believe the detractor average scroe should be 0-7 (not 0-6).  You may refer to my solution in this file.

 

Hope this helps.

 

Untitled.png


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

View solution in original post

10 REPLIES 10
Ashish_Mathur
Super User
Super User

Hi @PaulCo,

 

I believe the detractor average scroe should be 0-7 (not 0-6).  You may refer to my solution in this file.

 

Hope this helps.

 

Untitled.png


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Thanks, this got me there in the end.

 

Much appreciated.

You are welcome.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Thanks Ashish but the link to your file seems to be broken. Are you able to repost?

Hi @PaulCo,

 

The link works just fine.  Here it is again - https://1drv.ms/u/s!AnsG4LrWCkhUn75DCxXQX3mBOvLliA.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/
parry2k
Super User
Super User

Are you calculating average score in PowerBI or it is coming from your data source. Reason I asked, it will be easier if we remove un-wanted rows from table using query editor:

 

- filter rows where score is blank

- remove score column

- get distinct rows customer|avg score|acv

 

once above is done, you will have only rows which we are interested to work on, add following measures:

 

promoter acv =
Calculate(Sum(Table[ACV]), Filter(Table, Table[AvgScore]>=9))

detractor acv =
Calculate(Sum(Table[ACV]), Filter(Table, Table[AvgScore]<=6))

total acv =
Calculate(Sum(Table[ACV]), AllSelected(Table))

NPS = DIVIDE( promoted acv - detractor acv, total acv, 0) * 100


Subscribe to the @PowerBIHowTo YT channel for an upcoming video on List and Record functions in Power Query!!

Learn Power BI and Fabric - subscribe to our YT channel - Click here: @PowerBIHowTo

If my solution proved useful, I'd be delighted to receive Kudos. When you put effort into asking a question, it's equally thoughtful to acknowledge and give Kudos to the individual who helped you solve the problem. It's a small gesture that shows appreciation and encouragement! ❤


Did I answer your question? Mark my post as a solution. Proud to be a Super User! Appreciate your Kudos 🙂
Feel free to email me with any of your BI needs.

I thought about doing it this way but there are also comments in the surveys that we want to display in a table and if we only keep one record for each customer then we would lose the comments.

Gotcha,

 

- add new index column in your original table

- you can create another table as suggested in data model, reference original table and keep the original table as it is. set relationship on both tables on this index column

 

It will get you comments from original table. 



Subscribe to the @PowerBIHowTo YT channel for an upcoming video on List and Record functions in Power Query!!

Learn Power BI and Fabric - subscribe to our YT channel - Click here: @PowerBIHowTo

If my solution proved useful, I'd be delighted to receive Kudos. When you put effort into asking a question, it's equally thoughtful to acknowledge and give Kudos to the individual who helped you solve the problem. It's a small gesture that shows appreciation and encouragement! ❤


Did I answer your question? Mark my post as a solution. Proud to be a Super User! Appreciate your Kudos 🙂
Feel free to email me with any of your BI needs.

I think that should work.

 

However, I calculated the average score using the following expression under the New Column feature on Power BI Desktop.

 

Average Customer Score = 
	CALCULATE(
		AVERAGE('Table'[Survey Score]),
		ALLEXCEPT('Table','Table'[Customer])
		)

 

How do I recreate this in the query editor so that I can use the field when once I have removed the duplicates? 

This is a DAX expression and not to use in Query Editor. Once you are done in query editor, add new MEASURE.

 



Subscribe to the @PowerBIHowTo YT channel for an upcoming video on List and Record functions in Power Query!!

Learn Power BI and Fabric - subscribe to our YT channel - Click here: @PowerBIHowTo

If my solution proved useful, I'd be delighted to receive Kudos. When you put effort into asking a question, it's equally thoughtful to acknowledge and give Kudos to the individual who helped you solve the problem. It's a small gesture that shows appreciation and encouragement! ❤


Did I answer your question? Mark my post as a solution. Proud to be a Super User! Appreciate your Kudos 🙂
Feel free to email me with any of your BI needs.

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!

December 2025 Power BI Update Carousel

Power BI Monthly Update - December 2025

Check out the December 2025 Power BI Holiday Recap!

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.