Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
I am looking for a solution to sum values from one table.
Suppose I have the table shown below:
If I want to sum the amount of money raised by helmet purchases and bike perchases seperately I would get this:
Helmets: 140 and Bikes: 350. However, what I want is to remove the amount of money made by people who baught both a helmet and a bike, which in this case PersonID one is the only person who bought two different items. Here then my Helmet sum would be 100, and my Bike sum would be 250.
I am able to count how many people overlap between the two groups with this post https://community.powerbi.com/t5/Desktop/Calculating-overlap-between-selected-groups/td-p/128624, however I am having trouble getting the sum of the Amount column. Any suggestions would be much appreciated?
Solved! Go to Solution.
1. Create one calculated Column
Flag =
var _pID= Overlapping[PersonID]
return IF( ISBLANK(CALCULATE(SUM(Overlapping[Amount]),
FILTER(Overlapping,Overlapping[PersonID]=_pID && Overlapping[Product]<>EARLIER(Overlapping[Product])))),1,0)
2. Create Measure for Bike and Helmet
Bike = CALCULATE(SUM(Overlapping[Amount]),FILTER(Overlapping,Overlapping[Flag]=1 && Overlapping[Product]="Bike"))
Helmet = CALCULATE(SUM(Overlapping[Amount]),FILTER(Overlapping,Overlapping[Flag]=1 && Overlapping[Product]="Helmet"))
Need more clarity on your requirement.
As per my understanding you want to remove the product who bought two different items ? If yes which product we want to remove.
Hi, I want to remove the amount raised by people who bought two different items. So the sum of the amount raised I want is the sum for only people who bought either helmets or bikes and not both. So if I look at how much money was generated by Helmets I would get a sum that includes only people that bought helmets and not people that bought both helmets and bikes if that makes sense?
1. Create one calculated Column
Flag =
var _pID= Overlapping[PersonID]
return IF( ISBLANK(CALCULATE(SUM(Overlapping[Amount]),
FILTER(Overlapping,Overlapping[PersonID]=_pID && Overlapping[Product]<>EARLIER(Overlapping[Product])))),1,0)
2. Create Measure for Bike and Helmet
Bike = CALCULATE(SUM(Overlapping[Amount]),FILTER(Overlapping,Overlapping[Flag]=1 && Overlapping[Product]="Bike"))
Helmet = CALCULATE(SUM(Overlapping[Amount]),FILTER(Overlapping,Overlapping[Flag]=1 && Overlapping[Product]="Helmet"))
Thank you very much for your answer. This works correctly for what I asked. I was wondering if its possible to push the solution a step further and base the overlap as to whether or not they bought two different items in the same time period versus whether or not they bought two different items period. I had been trying to work on a solution for this, currently I have something like this:
I manged to make a fomula that I believe is close, however because of the filter at the end of product type Helmet, it returns me the same value as calculating all helmet sales regardless of overlap. I'm wondering if there is a better solution?
Amount raised only from helmets =
SUMX( CALCULATETABLE( SUMMARIZE(Overlap,Overlap[* PersonId],Overlap[Sale Date],Overlap[Amount ],"Amount", IF(Overlap[Sale Date]<= MAX('Date'[Date]) && Overlap[Sale Date] >= MIN('Date'[Date]) && DISTINCTCOUNT(Overlap[Product])=1,SUM(Overlap[Amount]))), FILTER(Overlap,Overlap[Product] ="Helmet")),[Amount])
User | Count |
---|---|
140 | |
113 | |
104 | |
77 | |
64 |
User | Count |
---|---|
135 | |
120 | |
101 | |
71 | |
61 |