The open-pipeline rollup for the procurement / RFX-response domain. Each row is one (issued_month × segment × region × stage) bucket carrying the count of opportunities, the sum of their estimated deal value, and the average win probability. `issued_month` is the month an RFX was issued (toStartOfMonth of issued_date), so this is a trend surface — pair the `stage` dimension with it to see how the pipeline moves from `qualifying` through `won` / `lost` / `no_bid`. Nullable segment / region / stage values are coalesced to `unknown` so they remain MergeTree-safe and visible rather than dropped.
- highTreating est_value_sum as won / booked revenue
est_value_sum sums the ESTIMATED deal size across every opportunity in the bucket regardless of stage — it includes `qualifying`, `in_progress`, `lost`, and `no_bid`. It is a pipeline-coverage figure, not realised revenue. Filter `stage = 'won'` (or read proposal outcomes) before reading it as closed value.
- mediumAveraging avg_probability across multiple buckets
avg_probability is a per-bucket average of the UInt8 0..100 probability. Rolling it up across buckets of unequal size is an avg-of-averages — biased. The `rfx_pipeline` metric exposes avg_probability as an avg aggregate so the metric layer recomputes it correctly; do not average the column client-side.
- mediumReading a single month as the full pipeline
The grain is keyed on issued_month (when the RFX was issued), not a snapshot date. A deal issued in March that is still `in_progress` lives in March's bucket — sum across the relevant issued_month range to see total open pipeline, don't read one month in isolation.
- “What is the open RFX pipeline value by stage this quarter?”
- “How many RFX opportunities are in each segment, by region?”
- “Average win probability of in-progress deals over the last 6 months.”