the functions hl.agg.filter
and hl.agg.explode
have been changed. They now look like:
hl.agg.filter(condition, hl.agg.collect(agg_expr))
hl.agg.explode(lambda elt: hl.agg.collect(elt), agg_array)
They can be combined arbitrarily with each other and with hl.agg.group_by
, but must always an aggregation. For example:
hl.agg.filter(t.idx > 7,
hl.agg.explode(
lambda i: hl.agg.group_by(t.group,
hl.agg.collect(t.x)),
t.ys))
would take the rows of the table for which t.idx > 7
, and then explode them along the contents of the array t.ys
, and finally group the filtered, exploded contents by the key t.group
and collect the value of t.x
for each group.
Also, hl.agg.count()
now takes no arguments. hl.agg.count(hl.agg.filter(cond, expr))
in the new syntax becomes hl.agg.filter(cond, hl.agg.count())
, so agg.count
never needs any arguments.