Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik and ServiceNow Partner to Bring Trusted Enterprise Context into AI-Powered Workflows. Learn More!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

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
Labels (2)
6 Replies
Anonymous
Not applicable
Author

Hard to say, perhaps it is a timing problem. Could you provide here the screenshot of the job?
Anonymous
Not applicable
Author

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
Anonymous
Not applicable
Author

Hi, here is the screenshot.
Anonymous
Not applicable
Author

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
Anonymous
Not applicable
Author

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)
Anonymous
Not applicable
Author

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