Skip to main content
So,

 

 

I have one data set that has some attributes that match another data set, I simply want to find out what records in data set 1 have a matching record in data set 2. 

 

 

So I have used the "matcher" transformer and a bunch of matched results get spit out of the "Matched" port but only about 60 of them are from data set 1 and when i look at the data and manually search for a match in data set 2 there is not always a match. 

 

 

This seems to happen in "NotMatched" also. The matcher is clearly doing something i dont understand.

 

 

What is that matcher doing to end up with this result?

 

Is there a way to just have FME report back that X record from data set 1 has a match in data set 2? 
Hi,

 

 

The Matcher compares all the input features. If a dataset 1 feature matched with another dataset 1 feature, they go to Matched port even though there is no matched dataset 2 feature.

 

The Matcher has many parameters. How did you set them?

 

 

Takashi
Hi,

 

 

You could try the FeatureMerger instead.  I would also have a good look at the data you are trying to compare.  Are they the same case?  (fix: StringCaseChanger).  Are there extra spaces? (fix:StringReplacer).  Just some things to try. 

 

 

Good luck.
Place an AttributeExposer before your Matcher and expose fme_feature_type. Then on your Matcher, put fme_feature_type under "Attributes That Must Differ". This will prevent features from data set 1 matching each other.

 

Lastly, since you only want features in data set 1 at the end, route the output of Matched and SingleMatched to a single Tester transformer and test the value of fme_feature_type is only the name of data set 1; this will filter out all of the features from data set 2 that were matched.

 

 

Edit: You can also use potentially use fme_basename or fme_dataset may work as well depending on circumstances, but fme_feature_type will probably be more dependable since it will separate out different data layers from the same source file.

Reply