BDI Query with Macro Expressions does not work when initial query returns 0 rows

  • 7022538
  • 11-Jan-2018
  • 11-Jan-2018

Environment

Operations Center 5.X

Situation

You have Data Integrator (BDI) Adapter based off of a BDI Definition which is setup to do a Delta Query using Macro Expressions. On starting the Adapter the initial BDI query returns 0 rows from the given database, and in the Formula.trc you see a warning stating the BDI Adapter is throwing a type mismatch message.

Resolution

Modify the BDI Definition to check if the Computed property is set to NULL or is set to a value.

Example BDI Definition:
#if ( ${query.initial} || !${query.getProperty().ComLastOccurTime})
     DATEADD(ss, LastOccurTime, '19700101')  >  dateadd(hour, -1, getdate())
#else
     LastOccurTime  >   '${query.getProperty().ComLastOccurTime}'
#end 

In the above example I have ${query.getProperty().ComLastOccurTime} as my computed property.

Cause

The cause is due to Macro Expression Engine setting the “computed” property to “NULL” when the initial query returns 0 rows. On the next iteration of the BDI Adapter it will execute the else portion of the statement and plug in "NULL" for the "Computed" property.