Forum Discussion
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
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.
4 Replies
- lbendlinSuper User
Use List.Contains()
- AlienSxSuper User
calculate GetVar("BU") beforehand
- Omid_MotamediseSuper 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.
- StuartPQYFrequent Visitor
Thank you to all replies.
Regards
Stuart