ABORT function not working in expression transformation informatica - informatica

I have a scenario where in need to compare the amount and if they don't match ABORT the session.
I have done the below logic, but some how the ABORT function is not working.(Error says has an error evaluating variable column)
this is what i did:
i have 3 source columns DLY_NET_AMT_DUE, WKLY_INVCD_AMT, INV_CHARGE_AMOUNT. All are inputs. I used a variable port and said
v_INV_CHARGE_AMOUNT=iif((DLY_NET_AMT_DUE=WKLY_INVCD_AMT) and
(WKLY_INVCD_AMT=INV_CHARGE_AMOUNT),'Amount Balanced',ABORT('Amount Not Balanced'))
o_INV_CHARGE_AMOUNT=v_INV_CHARGE_AMOUNT
Could you guys please help me where am i going wrong.

Please paste the exact error message.
If possible, share the transformation screenshot
What is the datatype of v_INV_CHARGE_AMOUNT port? Is it possible that it's decimal and the error is caused by trying to put Amount Balanced as value?
Did you try to run debugger and do the Evaluate expression?

Related

Excel formula error with multiple OR statements inside IF

I am trying to create an automated formula that reads the client initials from the cell and outputs a name for who is responsible for that client in another cell.
=IF(OR(A1="JL",A1="JP"), "John", "N/A",IF(OR(A1="RP",A1="RL",A1="RP"), "Doug", "N/A"))
But I get an error when I try to use this code, I am currently using Excel 2007
The error I get is
You've entered too many arguments for this function.
Is there a way to do this that gets around the error?
I have tried adjusting the comma locations and reducing the amount of brackets with no luck.
Or am I using the formula style wrong?

Lookup Functions not giving exact result

I have a little problem getting the result i wanted from the data that i have.
I tried index match match and vlook up match but it doesnt give me the result that i wanted.
Please see the sample data that I have. DATA 1
I wanted to get the # of hours based from this table TABLE
Can someone help me get the correct syntax for this please?
Tried several things to go around the with formulas but ended up either just 1 result for the whole column or an error. Thanks
up for this.

PDI - How to keep Transformation run even an error occur?

I have a transformation with several steps that run by batch script using Windows Task Scheduler.
Sometimes the first step or the n steps fail and it stops the entire transformation.
I want to transformation to run from start to end regardless of any errors, any way of doing this?
1)One way is to “error handling”, however it is not available for all the steps. You can right click on the step and check whether error handling option is available or not.
2) if you are getting errors because of incorrect datatype, for example: you are expecting a integer value and for some specific record you may get string value so it may fail , for handling such situation you can use data validation step.
Basically you can implement logic based on the transformation you have created. Above are some of the General methods.
This is what you called "Error Handling". Though your transformation runs with some Errors, you still want your transformation to continue to run.
Situations:
- Data type issues in the data stream.
Ex: say you have a column X of data type integer but by mistake you got string value. then you can define Error handling to capture all these records.
- while Processing json data.
Ex: the path you mentioned to retrieve a value of json field and for some data node the path can't identify or missing it. you can define error handling to capture all missing path details.
- while Update table
- If you are updating a table with some key, and if the key was not available as it is coming from input stream then an error will occur. you can define error handling here also.

How the expression transformation works?

Suppose, I am getting id, marks as input to expression transformation. I am calculating values like this.
ID--------------------------------------Input/Output Port
MARKS-----------------------------------Input Port
O_RESULT= V_RESULT----------------------Output Port
V_RESULT=IIF(MARKS > 60,"PASS","FAIL")--Variable Port
When i debug this code, Normally it calculates the values in the sequencial order. In above example, i have assigned V_RESULT to O_RESULT before calculating it. Still it is showing right result. Ideally, It should show NULL value.
Can somebody tell me why is it showing correct result?
Is there any setting in informatica for reference values? Does it store any unknown value reference for it and later replace it?
Would be grateful for help.
Output ports are evaluated after variable ports. I think this is the reason.
because output port is calculated last. Had o_result been variable port,then it should have shown the result you expected.
Because in debug mode, you see the last snapshot of each row. Debugger does not show separate rows for calculation and assignment. like in you case one row where o_result=null and v_result= and other row for o_result= and v_result=. But rather debugger will show last snapshot of each row. i.e. whatever o_result and v_result both have values.
but if you run the workflow, o_result will not be having any values.

Underlying mechanism in firing SQL Queries in Oracle

When we fire a SQL query like
SELECT * FROM SOME_TABLE_NAME under ORACLE
What exactly happens internally? Is there any parser at work? Is it in C/C++ ?
Can any body please explain ?
Thanks in advance to all.
Short answer is yes, of course there is a parser module inside Oracle that interprets the statement text. My understanding is that the bulk of Oracle's source code is in C.
For general reference:
Any SQL statement potentially goes through three steps when Oracle is asked to execute it. Often, control is returned to the client between each of these steps, although the details can depend on the specific client being used and the manner in which calls are made.
(1) Parse -- I believe the first action is actually to check whether Oracle has a cached copy of the exact statement text. If so, it can save the work of parsing your statement again. If not, it must of course parse the text, then determine an execution plan that Oracle thinks is optimal for the statement. So conceptually at least there are two entities at work in this phase -- the parser and the optimizer.
(2) Execute -- For a SELECT statement this step would generally run just enough of the execution plan to be ready to return some rows to the client. Depending on the details of the plan, that might mean running the whole thing, or might mean doing just a very small fraction of the work. For any other kind of statement, the execute phase is when all of the work is actually done.
(3) Fetch -- This is when rows are actually returned to the client. Generally the client has a predetermined fetch array size which sets the maximum number of rows that will be returned by a single fetch call. So there may be many fetches made for a single statement. Of course if the statement is one that cannot return rows, then there is no fetch step necessary.
Manasi,
I think internally Oracle would have its own parser, which does parsing and tries compiling the query. Think its not related to C or C++.
But need to confirm.
-Justin Samuel.