What about configuring a drill hierarchy in the Interaction Manager? This way you could easily change the group by of all visualizations at the same time when a filter is applied.
In your case you just need to use your product group as your base group, then product category as the next field to go to when you filter by product group.
const group_path = { group1: ["product_group", "product_categ"]};
const drill = {
'vis-1': group_path,
'vis-2': group_path,
'vis-3': group_path,
'vis-4': group_path
}
You can even add more fields.