cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
pcda
Helper I
Helper I

Get average of number of brands purchased

Hi everyone! I've seen this question answered in different forums but for some reason solutions won't work for me. 

I have a column with Customer ID and another one with Brands. Each customer can buy any of the 12 brands many times. 

I need to know the average brands bought per customer. 

For example: 

Customer 1

Brand A
Customer 1Brand B
Customer 1Brand C
Customer 2Brand A
Customer 2Brand A

 

So here customer 1 bought 3 brands and customer 2 bought 1 brand twice. The number I'm looking for would be 1.5. This is 3 brands + 1 brand divided by 2 customers. 

 

I've tried a lot of things but couldn't find a good DAX formula since they all return either the 12 brands or the amount of customers. 

 

I'd appreciate your help! Thanks everyone!

1 ACCEPTED SOLUTION

Try this in a card. or in the table with customers as rows

Better Average = SUMX(VALUES(Brand Column]), [AVG Brands])

View solution in original post

10 REPLIES 10
Len_Barr
Resolver I
Resolver I

Here is the formula for a new measure, put this measure into a card to get the final average number of all brands for all customers: 

Average Number of Brands = DIVIDE(DISTINCTCOUNT(Table[Brand]), DISTINCTCOUNT(Table[Customer]))
Otherwise put this into a table next to customer, to get the average number of brands per that customer. 
Remember to put this measure up by one decimal place, as the card will otherwise show the value 2, not the reuired 1.5
 
If this solution helped, smash that thumb icon so I can keep helping others

You're completely right, thanks for the correction! In my example the number I'd be looking for would be 2. 

It sort of worked. I have 55K entries, divided in 790 unique customers and 12 brands. All customers buy at least 1 brand, however your formula gave me 0.02 as a result. 
Any ideas why this is happening? Thank you again so much for your help

Oh okay - in that case the formula is incorrect. 

You are getting that number because its taking the number of unique brands (12) and dividing it by the number of unique customers (790). 

12/790 = 0.015  rounds up to 0.02

I'll think of a solution and come back to you

Thanks! So this is what I get: 

pcda_0-1677024797136.png

 

The Brand column is literally the Column with the brands shown as distinct count (no formula here). The AVG Brands Column is the formula you kindly provided which works perfectly individually. However, I'd need the total to be the sum of each customer's AVG Brand divided by the number of customers. Right now it is dividing the 12 brands just like you said. 

Any ideas on how to make it work better? I feel we are super close 🙂

Try this in a card. or in the table with customers as rows

Better Average = SUMX(VALUES(Brand Column]), [AVG Brands])

Genius! Thanks!

Glad to help!

Did you get something like 1.2 AVG Brands? Meaning that most customers don't deviate too much away from buying only one brand? 

That's right! 1.16 which kind of what I was expecting. The business translation (in case you were curious) will be bringing that number up through cross-selling. Thanks again!

olgad
Memorable Member
Memorable Member

Hi, try

AVERAGEX(ALL(Table[Customer]),DistinctCOUNT(BrandColumn))

DID I ANSWER YOUR QUESTION? PLEASE MARK MY POST AS A SOLUTION! APPRECIATE YOUR KUDO!
Best Stories, Interesting Cases: PowerBI Storytime Newsletter
Linkedin Profile: Linkedin
YouTube Channel: PowerBI Storytime

Thanks Olgad! I had tried that, however it returns the total number of brands that I have, and not the average per customer. 

Any ideas? Thank you so much for your help!

Helpful resources

Announcements
May 2023 update

Power BI May 2023 Update

Find out more about the May 2023 update.

Submit your Data Story

Data Stories Gallery

Share your Data Story with the Community in the Data Stories Gallery.

Top Solution Authors