Fabric is Generally Available. Browse Fabric Presentations. Work towards your Fabric certification with the Cloud Skills Challenge.
I have written a long if statement that goes as followed:
Total Direct Unit Cost =
VAR CurrencyUSD = CALCULATE(SUM('Currency Rate'[Units per EUR]),'Currency Rate'[Currency] = "USD")
RETURN
IF(CALCULATE(SUM('Stock Forecast'[Total Remaining Direct Unit Cost]),
'Vendor List'[EU / Non-EU] IN { "EU" }), SUM('Stock Forecast'[Total Remaining Direct Unit Cost])*1.03,
IF (CALCULATE(SUM('Stock Forecast'[Total Remaining Direct Unit Cost]), 'Vendor List'[EU / Non-EU] IN { "non-EU (EUR)" }), SUM('Stock Forecast'[Total Remaining Direct Unit Cost])*1.06,
IF(CALCULATE(SUM('Stock Forecast'[Total Remaining Direct Unit Cost]),
'Vendor List'[EU / Non-EU] IN { "non-EU (USD)" }), DIVIDE(SUM('Stock Forecast'[Total Remaining Direct Unit Cost])*1.35,CurrencyUSD),
IF( ISBLANK(SUM('Stock Forecast'[Total Remaining Direct Unit Cost])) = TRUE, 0 ))))
Basically:
Set a var for currency rate of USD
IF 'Vendor List'[EU / Non-EU] contains "EU" then I have to take the sum of [Total Remaining Direct Unit Cost]*1.03
ELSE IF 'Vendor List'[EU/Non-EU] contains "non-EU (EUR)" then I have to take the sum of [Total Remaining Direct Unit Cost]*1.06
ELSE 'Vendor List'[EU/Non-EU] contains "non-EU (USD)" then I have to take the sum of [Total Remaining Direct Unit Cost]*1.35 / Currency Rate
Unfortunately with the code I wrote, I won't get the desired result:
1: The first column is the amount without the measure.
2: The second column is the amount with the calculation written above (but calculation is wrong)
3: The third column indicates if the amount is for EU, non-EU (EUR) or non-EU (USD),
4: The fourth column is a measure with the desired result for the column that contains non-EU (EUR)
This is the measure of the fourth column:
CALCULATE(
SUM('Stock Forecast'[Total Remaining Direct Unit Cost]),
'Vendor List'[EU / Non-EU] IN { "non-EU (EUR)" }
)*1.06
How can I make sure that I get the result of the fourth column for non-EU (EUR)?
Solved! Go to Solution.
Hi @Niels_T ,
Based on my understanding, try to modify your measure like so:
Total Direct Unit Cost =
VAR CurrencyUSD =
CALCULATE (
SUM ( 'Currency Rate'[Units per EUR] ),
'Currency Rate'[Currency] = "USD"
)
RETURN
IF (
'Vendor List'[EU / Non-EU] IN { "EU" },
SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) * 1.03,
IF (
'Vendor List'[EU / Non-EU] IN { "non-EU (EUR)" },
SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) * 1.06,
IF (
'Vendor List'[EU / Non-EU] IN { "non-EU (USD)" },
DIVIDE (
SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) * 1.35,
CurrencyUSD
),
IF ( ISBLANK ( SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) ), 0 )
)
)
)
Or like so:
Total Direct Unit Cost =
VAR CurrencyUSD =
CALCULATE (
SUM ( 'Currency Rate'[Units per EUR] ),
'Currency Rate'[Currency] = "USD"
)
RETURN
SWITCH (
TRUE (),
SWITCH (
'Vendor List'[EU / Non-EU],
"EU", SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) * 1.03,
"non-EU (EUR)", SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) * 1.06,
"non-EU (USD)",
DIVIDE (
SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) * 1.35,
CurrencyUSD
)
), ISBLANK ( SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) ),
0
)
Best Regards,
Icey
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi @Niels_T ,
Based on my understanding, try to modify your measure like so:
Total Direct Unit Cost =
VAR CurrencyUSD =
CALCULATE (
SUM ( 'Currency Rate'[Units per EUR] ),
'Currency Rate'[Currency] = "USD"
)
RETURN
IF (
'Vendor List'[EU / Non-EU] IN { "EU" },
SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) * 1.03,
IF (
'Vendor List'[EU / Non-EU] IN { "non-EU (EUR)" },
SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) * 1.06,
IF (
'Vendor List'[EU / Non-EU] IN { "non-EU (USD)" },
DIVIDE (
SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) * 1.35,
CurrencyUSD
),
IF ( ISBLANK ( SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) ), 0 )
)
)
)
Or like so:
Total Direct Unit Cost =
VAR CurrencyUSD =
CALCULATE (
SUM ( 'Currency Rate'[Units per EUR] ),
'Currency Rate'[Currency] = "USD"
)
RETURN
SWITCH (
TRUE (),
SWITCH (
'Vendor List'[EU / Non-EU],
"EU", SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) * 1.03,
"non-EU (EUR)", SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) * 1.06,
"non-EU (USD)",
DIVIDE (
SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) * 1.35,
CurrencyUSD
)
), ISBLANK ( SUM ( 'Stock Forecast'[Total Remaining Direct Unit Cost] ) ),
0
)
Best Regards,
Icey
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Hi @Niels_T ,
The main issue of your formula is that the IF statement is not comparing anything so the calculation is always true and returns incorrect totals.
Can you please share a mockup data or sample of your PBIX file. You can use a onedrive, google drive, we transfer or similar link to upload your files.
If the information is sensitive please share it trough private message.
Regards
Miguel Félix
Proud to be a Super User!
Check out my blog: Power BI em PortuguêsCheck out the November 2023 Power BI update to learn about new features.