def aggregate(transform: dict, expr: ibis.Expr) -> ibis.Expr: groupby, = transform["groupby"] op, = transform["ops"] field, = transform["fields"] as_, = transform["as"] expr = expr.group_by(groupby).aggregate( [getattr(expr[field], _translate_op(op))().name(as_)]) return expr
def aggregate(transform: dict, expr: ibis.Expr) -> ibis.Expr: groupby = transform["groupby"] # It's undocumented, but an undefined "ops" value defaults to ["count"]' # https://github.com/vega/vega/blob/4d10f9da0df0833c90ff259bbd0960f7cb05e3bf/packages/vega-transforms/src/Aggregate.js#L159-L161 ops = transform.get("ops", ["count"]) fields = transform.get("fields", [None]) as_ = transform.get("as", [None]) expr = expr.group_by(groupby).aggregate([ _aggregate(expr, field, op, as__) for (field, op, as__) in zip(fields, ops, as_) ]) return expr