Skip to main content

Hello, 

All my data is in Excel spreadsheets. All the schemas are the same.

I have two readers:

The Updates Reader includes the 3 records that have been changed. These 3 records already exist in the Address Reader spreadsheet.

The Address Reader is the original spreadsheet that includes these 3 records before they were updated. 

I would like these updates written to the Addresses Writer which creates a new excel spreadsheet with the 3 records updated but no new records added. 

In my workbench here, I run it, and the results are the 3 records are added to the 95,393 thus the new spreadsheet has 95,396 records in it. Having the 3 records added results in having 6 duplicate records whereas previously there were no duplicate records. I need the Addresses output to be 95,393 records with the 3 records I mention previously updated. 

I have tried changing all the parameters in the Writer with no success. The results are always the same, 95,396.

I know I can use FeatureJoiner/FeatureMerger, but is there another method I can use?

What am I missing? can someone tell the exact parameter combination to make this work?

 

 

Hi @vxn43 .  I know the answer to your separate post suggested that you do not need ChangeDetector and could just use an Update Writer.   However you had not yet nominated that were going to use an Excel Writer.

Excel Writers are an exception, since unlike other common Writers, an Update cannot be made on a Key Update field identifier.

The way to do this reliably is most likely with a ChangeDetector or FeatureJoiner .   Both methods need a unique ID value to be in the source Excel worksheet (or the row entries are not allowed to move from their row number, allowing the row ID to be the unique ID).

FeatureJoiner put the original rows in the Left Port, and the updated rows in the Right Port. Change the “Attribute Conflict Resolution” Parameter to “Prefer Right”.  This will output all the original rows and original values, excepting where there is an update row, instead Attribute values on the Output port will be those from the Updated rows (Ie. Right Port Features)


Reply