[SOLVED] WARNING: Join: Special attribute 'id' already exist, skipping!
tennenrishin
New Altair Community Member
Hello all
My console is sometimes filled with the following warning message:
WARNING: Join: Special attribute 'id' already exist, skipping!
Can anyone explain to me what it means? In particular, what is it about the process below (for example) that is warning-worthy?
Isak
My console is sometimes filled with the following warning message:
WARNING: Join: Special attribute 'id' already exist, skipping!
Can anyone explain to me what it means? In particular, what is it about the process below (for example) that is warning-worthy?
<?xml version="1.0" encoding="UTF-8" standalone="no"?>Thanks in advance
<process version="5.2.008">
<context>
<input/>
<output/>
<macros/>
</context>
<operator activated="true" class="process" compatibility="5.2.008" expanded="true" name="Process">
<process expanded="true" height="654" width="987">
<operator activated="true" class="generate_data_user_specification" compatibility="5.2.008" expanded="true" height="60" name="Generate Data by User Specification" width="90" x="45" y="30">
<list key="attribute_values">
<parameter key="key" value="1"/>
<parameter key="data" value="5"/>
</list>
<list key="set_additional_roles"/>
</operator>
<operator activated="true" class="set_role" compatibility="5.2.008" expanded="true" height="76" name="Set Role" width="90" x="179" y="30">
<parameter key="name" value="key"/>
<parameter key="target_role" value="id"/>
<list key="set_additional_roles"/>
</operator>
<operator activated="true" class="generate_data_user_specification" compatibility="5.2.008" expanded="true" height="60" name="Generate Data by User Specification (2)" width="90" x="45" y="120">
<list key="attribute_values">
<parameter key="key" value="1"/>
<parameter key="data2" value="6"/>
</list>
<list key="set_additional_roles"/>
</operator>
<operator activated="true" class="set_role" compatibility="5.2.008" expanded="true" height="76" name="Set Role (2)" width="90" x="179" y="120">
<parameter key="name" value="key"/>
<parameter key="target_role" value="id"/>
<list key="set_additional_roles"/>
</operator>
<operator activated="true" class="join" compatibility="5.2.008" expanded="true" height="76" name="Join" width="90" x="301" y="75">
<parameter key="join_type" value="left"/>
<list key="key_attributes"/>
</operator>
<connect from_op="Generate Data by User Specification" from_port="output" to_op="Set Role" to_port="example set input"/>
<connect from_op="Set Role" from_port="example set output" to_op="Join" to_port="left"/>
<connect from_op="Generate Data by User Specification (2)" from_port="output" to_op="Set Role (2)" to_port="example set input"/>
<connect from_op="Set Role (2)" from_port="example set output" to_op="Join" to_port="right"/>
<connect from_op="Join" from_port="join" to_port="result 1"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_result 1" spacing="0"/>
<portSpacing port="sink_result 2" spacing="0"/>
</process>
</operator>
</process>
Isak
0
Answers
-
Hi Isak,
in this case this is a bug and the message can be ignored (it's only the message, nothing more).
However, imagine you are joining to example sets by id, where each of them has a label. The problem then is, that the special roles must be unique, i.e. the final example set may contain only one label attribute. In that case, only the label from the first set is kept, whereas the label from the second example set will be dismissed. That's what the error message wants to say.
But since you are joining by id anyway, you can safely ignore the message here.
Best regards,
Marius0 -
Thanks for the explanation, Marius!
(I assume then there is no way currently to get rid of these messages without changing the overall process verbosity to below warning level.)0 -
No, unfortunately there's no possibility to do that.
Best regards,
Marius0 -
I know it's (almost) harmless, but it would be nice if this little bug could go awayMarius wrote: in this case this is a bug and the message can be ignored...
Regards,
Isak0 -
Hi Isak,
I created a ticket for this issue, but since it is, as you already stated, a small thing, but a bit complicated since at the same time a lot of special cases must be considered, it probably won't get high priority.
Best regards,
Marius0 -
Pleeeease consider reconsidering the priority of this request ;D
I have to wade through hundreds (if not thousands) of these messages every day in my console to find the meaningful messages between them.0 -
Hi,
I guess I'm in a hacky mood when I'm reading your threads, so you are in luck again (Refers to your other thread Accessing "last modified" metadata) 8)
Disclaimer: The following code is a very dirty hack and should not be used! But I guess if you are having the problem of sifting through hundreds of these false warnings it will help you until the issue gets resolved.
The solution is once again the Execute Script operator (this thing can be abused to no end ::) )
Add the Execute script operator before your Join operator and put this in as the script paramter:
This will set a filter to the logger which will filter exactly all log entries which contain the phrase "Special attribute 'id' already exist". After your join operator you can place another execute script operator which will remove the filter again:
import com.rapidminer.operator.Operator;
import java.util.logging.Filter;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
Logger.getLogger(Operator.class.getName()).setFilter(new Filter() {
@Override
public boolean isLoggable(LogRecord record) {
if (record.getMessage().contains("Special attribute 'id' already exist")) {
return false;
} else {
return true;
}
}
});
return (input[0]);
But as mentioned above, this is dirty and should not be done, but I guess in your case you might like it anyway
import com.rapidminer.operator.Operator;
import java.util.logging.Logger;
Logger.getLogger(Operator.class.getName()).setFilter(null);
return (input[0]);
Regards,
Marco0 -
Thank you!
I didn't even realize what the Execute Script operator is. I think it lacked documentation when I once looked into it, so I've spent hours and hours ever since then writing "scripts" graphically in the Turing tarpit that is RM Macro + Process Control operators :-[
0