Get Inspire insights from former attendees in our AMA discussion thread on Inspire Buzz. ACEs and other community members are on call all week to answer!

Alteryx Designer Desktop Discussions

Find answers, ask questions, and share expertise about Alteryx Designer Desktop and Intelligence Suite.
SOLVED

Is there any way to shortcut multiple IIF Condition?

RichardAlt
8 - Asteroid

Hi Alteryx Community,

 

This is my first time to use Alteryx, Is there any way to shorten my IIF Condition? or other method that I can use?

 

Thank you so much!

 

 

IIF(Contains([Description], "FIMM") 
AND 
[System Code] = "U3", "FIMM U3", 
 IIF(Contains([Description], "FIMM"), "FIMM Collection", 
  IIF(Contains([Description],"PREPAY"), 
   IIF([Fiscal Period] = 1, "PREPAYMENT (MAMSB) - Jan", 
	IIF([Fiscal Period] = 2, "PREPAYMENT (MAMSB) - Feb", 
	 IIF([Fiscal Period] = 3, "PREPAYMENT (MAMSB) - Mar" , 
	  IIF([Fiscal Period] = 4, "PREPAYMENT (MAMSB) - Apr", 
       IIF([Fiscal Period] = 5, "PREPAYMENT (MAMSB) - May", 
        IIF([Fiscal Period] = 6, "PREPAYMENT (MAMSB) - Jun", 
         IIF([Fiscal Period] = 7, "PREPAYMENT (MAMSB) - Jul", 
          IIF([Fiscal Period] = 8, "PREPAYMENT (MAMSB) - Aug", 
           IIF([Fiscal Period] = 9, "PREPAYMENT (MAMSB) - Sep", 
            IIF([Fiscal Period] = 10, "PREPAYMENT (MAMSB) - Oct", 
             IIF([Fiscal Period] = 11, "PREPAYMENT (MAMSB) -Nov", 
              IIF([Fiscal Period] = 12, "PREPAYMENT (MAMSB) - Jan", [Remarks1])))))))))))),[Remarks1])))

 

3 REPLIES 3
RolandSchubert
16 - Nebula
16 - Nebula

Hi @RichardAlt ,

 

the main problem seems to be the lot of IIFs related to [Description] = "PREPAY". In my opinion, it would be an option to use a Filter tool to select all "PREPAY" rows and use a Join tool (join on [Fiscal Period] to assign to correct value. The other rows ("FIMM") could be handled by a Formula tool using a much simpler IF-construction, at the end a Union tool could be used to put all rows together. I've added a simple sample workflow to demostrate. What do you think?

 

Best regards

 

Roland 

Martyn
9 - Comet

@RichardAlt 

 

You could try using the Switch function which would give you something along the lines of - 

 

"PREPAYMENT (MAMSB) - " + Switch([Fiscal Period], "", 1, "Jan", 2, "Feb", 3, "Mar", 4, "Apr", 5, "May", 6, "Jun", 7, "Jul", 8, "Aug", 9, "Sep", 10, "Oct", 11, "Nov", 12, "Dec")

 

This would shorten your formula significantly.

danilang
19 - Altair
19 - Altair

Hi @RichardAlt 

 

Along the lines of what @Martyn said, you could replace the Month conditions with a single one

 

IIf (Contains([Description],"FIMM") and SystemCode="US", [Description]+" " +[SystemCode],
  IIF( Contains([Description],"FIMM"),"FIMM Collection",

    IIF( Contains([Description],"Prepay"),
       IIF ([Fiscal Period] >=1 and [Fiscal Period]<=12,
           "PREPAYMENT (MAMSB) - " + datetimeFormat("2019-" + padleft(tostring([Fiscal Period]),2,"0") +"-01","%b"), [Remarks]),
[Remarks])))

 

the datetimeFormat("2019-" + padleft(tostring([Fiscal Period]),2,"0") +"-01","%b") line converts the Fiscal Period from 1-12 to Jan-Dec

 

Or for those of us who prefer the non-excel syntax

 

 

 

If Contains([Description],"FIMM") and SystemCode="US" then
	[Description]+" " +[SystemCode]
elseif Contains([Description],"FIMM") then
	"FIMM Collection"
elseif Contains([Description],"Prepay") then
	if [Fiscal Period] >=1 and [Fiscal Period]<=12 then
		"PREPAYMENT (MAMSB) - " + datetimeFormat("2019-" + padleft(tostring([Fiscal Period]),2,"0") +"-01","%b")
	else
		[Remarks]
	endif
else
	[Remarks]
endif

 

 

Dan

Labels