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

Join us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.

Reply
StuartPQY
Frequent Visitor

Faster M code at execution time for nested if statement

Hello

 

I have the following code in a nested if statment format

 

if GetVar("BU") = "UK" and [Cost Centre] >= 17000 and [Cost Centre] < 10826 then "EUR"
else if GetVar("BU") = "UK" and [Payment Currency Code] = null
then "GBP"
else if GetVar("BU") = "LM" and [Legal Entity] = "aaaaa" then "USD"
else if GetVar("BU") = "LM" and [Legal Entity] = "bbbbb" then "USD"
else if GetVar("BU") = "LM" and [Legal Entity] = "ccccc" then "GBP"
else if GetVar("BU") = "LM" and [Legal Entity] = "ddddd" then "GBP"
else if GetVar("BU") = "LM" and [Payment Currency Code] = null then "USD"
else [Payment Currency Code]

 

I am wondering if there is a faster way to write this in M code.  I mean faster at execution time.

 

Thank you

 

Stuart

1 ACCEPTED SOLUTION
Omid_Motamedise
Super User
Super User

replace your if conditions with the below code

if GetVar("BU") = "UK" then
    if [Cost Centre] >= 17000 and [Cost Centre] < 10826 then "EUR"
    else if [Payment Currency Code] = null then "GBP"
    else [Payment Currency Code]
else if GetVar("BU") = "LM" then
    if [Legal Entity] = "aaaaa" or [Legal Entity] = "bbbbb" then "USD"
    else if [Legal Entity] = "ccccc" or [Legal Entity] = "ddddd" then "GBP"
    else if [Payment Currency Code] = null then "USD"
    else [Payment Currency Code]
else 
    [Payment Currency Code]

 

 

in the if using and/or  will evaluate every time but replaced them by a nested if can increase the efficiency.

 

another tips which is related to the data structure, use the condition wich can filter more rows in the first condition series.

If my answer helped solve your issue, please consider marking it as the accepted solution. It helps others in the community find answers faster—and keeps the community growing stronger!
You can also check out my YouTube channel for tutorials, tips, and real-world solutions in Power Query with the following link
https://youtube.com/@omidbi?si=96Bo-ZsSwOx0Z36h

View solution in original post

4 REPLIES 4
Omid_Motamedise
Super User
Super User

replace your if conditions with the below code

if GetVar("BU") = "UK" then
    if [Cost Centre] >= 17000 and [Cost Centre] < 10826 then "EUR"
    else if [Payment Currency Code] = null then "GBP"
    else [Payment Currency Code]
else if GetVar("BU") = "LM" then
    if [Legal Entity] = "aaaaa" or [Legal Entity] = "bbbbb" then "USD"
    else if [Legal Entity] = "ccccc" or [Legal Entity] = "ddddd" then "GBP"
    else if [Payment Currency Code] = null then "USD"
    else [Payment Currency Code]
else 
    [Payment Currency Code]

 

 

in the if using and/or  will evaluate every time but replaced them by a nested if can increase the efficiency.

 

another tips which is related to the data structure, use the condition wich can filter more rows in the first condition series.

If my answer helped solve your issue, please consider marking it as the accepted solution. It helps others in the community find answers faster—and keeps the community growing stronger!
You can also check out my YouTube channel for tutorials, tips, and real-world solutions in Power Query with the following link
https://youtube.com/@omidbi?si=96Bo-ZsSwOx0Z36h

Thank you to all replies.

 

Regards

 

Stuart

AlienSx
Super User
Super User

calculate GetVar("BU") beforehand

lbendlin
Super User
Super User

Use List.Contains()

Helpful resources

Announcements
Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.