Skip to content

Support "post-aggregation" expressions (or a multi-weight ratio-delta aggregate) for row-pivoted views #3198

Description

@MPizzotti

Description of Problem:
Expression columns are evaluated at leaf granularity and then aggregated with
the column's chosen aggregate. This works well for a single ratio via the
built-in weighted mean aggregate (e.g: #2324).

aggregates: { "conversion": ["weighted mean", "traffic"] }
→ correctly yields sum(customers)/sum(traffic) at every group_by level.

However, there's no way to correctly aggregate a derived metric built from
two independently-weighted ratios with different weight columns, e.g.:

conversion = customers / traffic
conversion_py = customers_py / traffic_py
conversion_delta = (conversion - conversion_py) * 100

No single built-in aggregate can express "weighted mean of x with weight w1
minus weighted mean of y with weight w2" — the result is not a weighted mean
of (x - y) under any single weight vector when w1 and w2 differ per row.

Potential Solutions:

  1. Allow expressions to be evaluated after aggregation, operating on
    already-aggregated column values within a pivoted view (i.e. a
    "post-aggregation expression" concept), or
  2. A new built-in aggregate that accepts two (numerator, denominator) pairs
    and computes the difference of the two resulting ratios at each pivot
    level, or
  3. Support composing a View's aggregated output directly as input to a new
    set of expressions without round-tripping through a second Table.

Happy to provide a minimal repro dataset/config if useful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions