This time we’re going bigger than ever. Fabric, Power BI, SQL, AI and more. We're covering it all. You won't want to miss it.
Learn moreLevel up your Power BI skills this month - build one visual each week and tell better stories with data! Get started
Hi,
I'm looking for a smart way, using a measure, to assign a discount value against a customer.
I have 2 tables Transactions and DiscountCriteria. I would like to SUM the Tons for each Company, and then depending on the Total SUM, apply a discount e.g. Company A have 1.8 Tons so they would get a 0.03 discount (discounts are all greater than).
I know I could do this by writing a large IF measure, but I'm wondering if there was a better way to do this.
Transactions:
| Company | Date | Tons | Value |
| A | 01/01/2016 | 0.5 | 35 |
| A | 01/03/2016 | 1.3 | 100 |
| B | 01/03/2015 | 3 | 256 |
| C | 01/04/2015 | 4 | 354 |
| D | 01/03/2015 | 1.1 | 123 |
DiscountCriteria:
| Tons | Discount |
| 0.2 | 0.01 |
| 0.5 | 0.02 |
| 1 | 0.03 |
| 3 | 0.04 |
| 5 | 0.05 |
Thanks,
Jake
The smarter IF is called SWITCH.
Thanks @Greg_Deckler, I've gone with the tried and tested SWITCH(TRUE()) formula, how could I have forgot about this beauty:
Discount - Volume =
SWITCH (
TRUE (),
AND ( SUM ( SAGE_Extract[Tons] ) > 2, SUM ( SAGE_Extract[Tons] ) <= 5 ), 0.01,
AND ( SUM ( SAGE_Extract[Tons] ) > 5, SUM ( SAGE_Extract[Tons] ) <= 9 ), 0.02,
AND ( SUM ( SAGE_Extract[Tons] ) > 9, SUM ( SAGE_Extract[Tons] ) <= 12), 0.03,
AND ( SUM ( SAGE_Extract[Tons] ) > 12, SUM ( SAGE_Extract[Tons] ) <= 14), 0.04,
SUM ( SAGE_Extract[Tons] ) > 14, 0.05
)
This has raised the next issue for me. Every row in the Transactions table has a currency against it e.g. "USD" or "GBP". I would like to add something like this to my measure:
If the currency = "USD" then multiply the discount by my Currency Conversion Rate measure.
Any thoughts?
You can create another measure
AdjustedDiscunt = if (currency = "USD", [Discount - Volume ]*[Currency Conversion Rate],[Discount - Volume ] )
Just add table names to above formula
@NipponSahore, I'm pretty sure that formula only applies to a calculated column, not a measure.
@NipponSahore, I used a 2nd measure similar to this:
Measure = IF(HASONEVALUE(SAGE_Extract[Symbol]),IF(VALUES(SAGE_Extract[Symbol]) = "USD",[Discount - Volume]*'Exchange Rate'[Exchange Rate Value],[Discount - Volume]))
I might re-visit this in the future to see if I can combine the 2 measures into 1, but I am happy for now.
Check out the April 2026 Power BI update to learn about new features.
Sign up to receive a private message when registration opens and key events begin.
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
| User | Count |
|---|---|
| 28 | |
| 23 | |
| 22 | |
| 16 | |
| 16 |
| User | Count |
|---|---|
| 60 | |
| 35 | |
| 28 | |
| 22 | |
| 21 |