How to use a globalMap variable in a tMatchGroup's "Match Threshold"

Four Stars

How to use a globalMap variable in a tMatchGroup's "Match Threshold"

Hi,
I want to use a variable stored in the globalMap to set the "Match Threshold" area of a tMatchGroup
The variable is of type String(comma is used for decimal separation), so I am creating a brand new Double variable in a tJava, right before the tMatchGroup like this:
   String x = globalMap.get("MatchTreshold").toString();
   x = x.replace(",", ".");    // Replace the French comma by a dot
   globalMap.put("MatchTresholdDouble", Double.parseDouble(x));

   System.out.println("MatchTresholdDouble: " + globalMap.get("MatchTresholdDouble"));  // displays the correct value
I tried both

globalMap.get("MatchTresholdDouble")
Double.parseDouble(globalMap.get("MatchTresholdDouble"))

In the "Match Threshold" area of the tMatchGroup but, when running the job,  the error message is always:
mdm_produit.job_chrg_tbl_ref_udc_stef_v4_0_1.Job_Chrg_Tbl_REF_UDC_Stef_V4 - tMatchGroup_1_GroupIn All attribute matcher weights are 0. This is an invalid setting!
Am I right to think that Talend expects a Double there and could you please provide the correct syntax?
Thanks,
Stéphan
Seventeen Stars

Re: How to use a globalMap variable in a tMatchGroup's "Match Threshold"

Hard to say, perhaps it is a timing problem. Could you provide here the screenshot of the job?
Four Stars

Re: How to use a globalMap variable in a tMatchGroup's "Match Threshold"

Thanks for your help jlolling
I am having a hard time uploading the screenshot ("Error : The server was unable to save the uploaded file. Please contact the forum administrator at" message).  I will ask a colleague to try!
My colleague is also unable to upload the screenshot.  Would you mind if I sent it to you by your gmail account?  Thanks
Four Stars SAQ
Four Stars

Re: How to use a globalMap variable in a tMatchGroup's "Match Threshold"

Hi, here is the screenshot.
Four Stars

Re: How to use a globalMap variable in a tMatchGroup's "Match Threshold"

The server will still not allow us to upload screenshots.  Since the message stops at: "Error : The server was unable to save the uploaded file. Please contact the forum administrator at", I simply do not know who to contact....
Anyways, a tMatchGroup's "Match Threshold" area accepts only values.  They can be with or without quotes like "0.85" or 0.85.
But if you try to type in any java command like Double.valueOf("0.85"); or any variable name, the error message is:
Exception in component tMatchGroup_1_GroupIn
java.lang.NumberFormatException: For input string: "Double.valueOf(0.85);"
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at java.lang.Double.valueOf(Unknown Source)
at org.talend.dataquality.record.linkage.grouping.AbstractRecordGrouping.createRecordMatcher(AbstractRecordGrouping.java:545)
It seems like whatever you type in there is treated as a String, even if it is a variable name or a call to a Java method!
I believe someone else had a similar issue here: https://jira.talendforge.org/browse/TDQ-9429
but I cannot tell what the solution was
P.S.: I made a mistake in a previous reply: Error message All attribute matcher weights are 0  was my own fault... Sorry
Four Stars

Re: How to use a globalMap variable in a tMatchGroup's "Match Threshold"

Found this workaround:
Since an exception occurs when trying to set the "Match Threshold" area of a tMatchGroup with globalMap.get("matchThreshold"):
   Exception in component tMatchGroup_1_GroupIn java.lang.NumberFormatException: For input string: "globalMap.get(matchThreshold)"

I tried adding a String variable to the Context and use context.matchThreshold to set the "Match Threshold" area and it worked!!!
I did not even have to cast the String into a Double
I can't tell you why (even if I do not trust the double quotes of globalMap.get()...) but don't waste too much time with globalMap.get and use a context instead (version 6.0)
One Star

Re: How to use a globalMap variable in a tMatchGroup's "Match Threshold"

HI,
i had the same problem because i want to put context.myVariable instead of a value
Talend sent me a patch to accept context variable BUT after i try tu put globalMap.get("variable")  and i met the same mistake
the patch just accept a value or read the value by recognizing context.VARIABLE . . . thanks beautiful patch
i was in Talend MDM 5.6.1

What’s New for Talend Spring ’19

Watch the recorded webinar!

Watch Now

Agile Data lakes & Analytics

Accelerate your data lake projects with an agile approach

Watch

Definitive Guide to Data Quality

Create systems and workflow to manage clean data ingestion and data transformation.

Download

Tutorial

Introduction to Talend Open Studio for Data Integration.

Watch