Log and Ignore Row Error: Difference between revisions

From Starfish ETL
Jump to navigation Jump to search
No edit summary
No edit summary
Line 34: Line 34:
}
}
return res;
return res;
}
</syntaxhighlight>
=Log Error To Origin=
I use my global error variable update the Origin record with the error in a custom error field.
<syntaxhighlight lang="csharp">
object ScriptedField()
{
return sQuoteToNSError;
}
}
</syntaxhighlight>
</syntaxhighlight>

Revision as of 17:32, 10 December 2020

Row Errors

To log an error on a Row, we must ues the Starfish.ErrorMessage property. To continue running a job when a row errors, we need to set Starfish.SuppressError=true; in an "On Row Error" POST-PROCESS.

First, create an "On Row Error" POST-PROCESS. In my post process, I use a globally created C# variable so I can use the Error Message in a later stage that updates the Origin so the people in the Origin can see why their record did not make it to the destination.

//"On Row Error" POST-PROCESS
void CSharpProcedure()
{
    sQuoteToNSError = Starfish.ErrorMessage;
    //Starfish.LogMessage(sQuoteToNSError);
    //There's also a boolean you can set called "SuppressError" which will swallow the error and allwo the process to continue
    //I could check the error message for something and then set that to true if I want to ignore it.
    Starfish.SuppressError=true;
}

The error for me was always happening on the first Stage. I then have a second stage that updates the Origin with the foreign ID or the error, depending on if the first stage is successful or not. I set my origin update stage to not update blank values so it will only set 1 field or the other because only one will have a value.

Other Errors

"Other Errors" are anything you want them to be. For example, if you need a field to have a value/NOT be blank, then you could capture that and pass it back to your source so the people in the source database can see why their record did not make it to the destination database. In this example, I need the AccountID to not be blank. So I check for a blank and if blank, set my error variable to my custom error.

object ScriptedField()
{
	string res = "";
	if (Starfish.OriginData["ACCOUNT_ID"] != null)
	{
        res = Starfish.XRefRead("StoNSAccountIDs",Starfish.OriginData["ACCOUNT_ID"].ToString());
        if (string.IsNullOrEmpty(res))
		{
		    sQuoteToNSError = "Sugar Quote Billing Account Not Found in NetSuite.";
		    Starfish.GotoStage("Update Sugar With NS ID or NS Error");
		}
	}
	return res;
}

Log Error To Origin

I use my global error variable update the Origin record with the error in a custom error field.

object ScriptedField()
{
	return sQuoteToNSError;
}