add a collect_map udaf