Odd Kettle Behaviour.

I've been tinkering with the Kettle ETL loader for the last few weeks, and I think I am noticing some odd behaviour , replication is difficult but I think its consistent

I created a transform to load patients...including a row to transfor the Date of Birth,

For some reason this transform would fail the etl process with the error

Failed to Validate Patient Age:value does not exist. ( I think) for each line

Frustrated..I x checked my DOB format. to ensure it was a date formate dd/MM/yyyy

Anyhow after I still repeatedly got the same error despite my changes I elected to split things up and removed most of the transformed data leaving only Name, Species, and Breed.

running the transform same error.....but I wasnt even loading any dates.

So I thinking thats just dumb, "age" has a min cardinality of 0 so who cares if there is no value.

Anyway I decided to try 1 more thing...I closed kettle and reopened it and ran the stripped back transform...

it ran with no errors

This could easily be a kettle not a loader error, but I thought Id bring it up here

Interestingly I subsequently ran an additional loader to load the data i removed using a ref ID and the DOB went in fine in the format I had setup at the start....

Anyhow...

 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Re: Odd Kettle Behaviour.

Can you post the error? It should appear in an etl.log file in your kettle install.

-Tim

Re: Odd Kettle Behaviour.

I dont have that log file in my kettle install ....I did find the kettle temp logs in the temp directory and extracted the following

2012/03/08 09:44:07 - Final Select.0 - Wrote row to next step: [Jess], [Feline], [DSH], [02/03/2012], [Y], [2626], [Tortoise Shell], [Female], [true], [01/01/2005]

(thats the row info being parsed to the OPVPMS loader (actually its the last row of 1127)

but all the rows fail with the same error

clarifying the last value is the Dateofbirth

2012/03/08 09:44:08 - Final Select.0 - Signaling 'output done' to 1 output rowsets.
2012/03/08 09:44:08 - Final Select.0 - Finished processing (I=0, O=0, R=1127, W=1127, U=0, E=0)
2012/03/08 09:45:00 - OpenVPMS Loader 2.0 - Failed to process: Failed to validate Age of Patient(Pet): Failed to get value
2012/03/08 09:45:00 - OpenVPMS Loader 2.0 - Failed to process row 1: Failed to validate Age of Patient(Pet): Failed to get value
2012/03/08 09:45:00 - OpenVPMS Loader 2.0 - Failed to process row 1006: Failed to validate Age of Patient(Pet): Failed to get value
2012/03/08 09:45:00 - OpenVPMS Loader 2.0 - Failed to process row 1007: Failed to validate Age of Patient(Pet): Failed to get value
2012/03/08 09:45:00 - OpenVPMS Loader 2.0 - Failed to process row 1008: Failed to validate Age of Patient(Pet): Failed to get value
2012/03/08 09:45:00 - OpenVPMS Loader 2.0 - Failed to process row 1012: Failed to validate Age of Patient(Pet): Failed to get value
 
It doesnt throw a kettle exception at all.
 
That was the error I couldnt clear....
 
HOWEVER 
Kettle caches database's by itself...see here
Use database cache? Spoon caches information that is stored on the source and target databases. In some instances, caching causes incorrect results when you are making database changes. To prevent errors you can disable the cache altogether instead of clearing the cache every time.

Note: Spoon automatically clears the database cache when you launch DDL (Data Definition Language) statements towards a database connection; however, when using third party tools, clearing the database cache manually may be necessary.

So the problem is if I changed things about in either database Kettle was not updating the info...not that it should have mattered it wasnt like I was making database changes to fix a transform...

I did at one point remove the derived value from the patient archetype to remove the validation...but i didnt reload kettle so it wouldnt have updated the archetypes 

I have the above option checked. or did have.

 

 

Regards
 
Ben 
OpenVPMS Installer and Helper 
Ph: +61423044823 
Email: info[at]charltonit.com[dot]au

Re: Odd Kettle Behaviour.

The "Failed to validate Age of Patient(Pet): Failed to get value" indicates that it cannot evaluate the "party:getPatientAge()" expression for the age node:

         <node name="age" type="java.lang.String" path="/details/age" derived="true"
              derivedValue="party:getPatientAge()"/> 

The party:getPatientAge() function was introduced in 1.5 - if you have an older version of the OpenVPMS kettle plugin installed, it won't be able to evaluate the expression.

-Tim

Re: Odd Kettle Behaviour.

I'll check my version tomorrow, but that doesnt explain why it failed on a transformation before a kettle reload but worked on the same transform (with the same version of kettle plugin).

Anyhow ...the data loaded in the end ..

Thanks Tim :)

Re: Odd Kettle Behaviour.

Each release of OpenVPMS includes the version numbers in the jar names.

If you've followed the instructions in https://openvpms.atlassian.net/browse/ETL-11 to update Kettle 3.2 to work with OpenVPMS, then you might have multiple releases of OpenVPMS jars in the libext/spring directory. These all get loaded by Kettle - it might use an old release or a new release, or a mixture of both - it cannot be determined which.

Make sure you remove old jars before installating a new version.

-Tim

Re: Odd Kettle Behaviour.

I was dead sure that it was a fresh 3.2 install when I setup this test unit.  I checked the plugin directory and it was as per the 1.5 zip as was libext.  

I am data dumping everything I have transformed later today and restarting anyway so I can reproduce the error then I will let you know. Otherwise close this out.

Regards
 
Ben 
OpenVPMS Installer and Helper 
Ph: +61423044823 
Email: info[at]charltonit.com[dot]au
Syndicate content