The idea was to get only one record ( KEEP(1) ) from PureEnough which also exists in this_set_all, and was using PARTITION RIGHT to indicate that the right dataset was the one distributed among the supercomputer nodes. Otherwise it would get one record per each this_set_all record with match in PureEnough (match and KEEP work one way: only left to right).
Anyway, I found another way to do it using smaller datasets (both PureEnough and node_prop are small) and taking in consideration that when using Impure nodes (Purity less than 1.0) is necessary to assign the class with the largest count to the final node.
    PureEnough := gini_node(gini >= Purity);
    s_node_prop:= SORT(node_prop, group_id, node_id, -cnt);
    d_node_prop:= DEDUP(s_node_prop, group_id, node_id);    
    leafsNodes := JOIN(d_node_prop, PureEnough, LEFT.node_id=RIGHT.node_id, TRANSFORM(gNodeInstCont, SELF.id:=0, SELF.number:=0, SELF.value:=0, SELF.level:= p_level,SELF:=LEFT), FEW);