GASP
Finance Revenue Metrics Outcome

Consumption Net Revenue Retention

Consumption Net Revenue Retention: The consumption revenue of the customers active at period start, over a twelve-month period, divided by the same customers' consumption revenue over the twelve months before. Consumption Net Revenue Retention (Consumption NRR) reads year two over year one, Snowflake's basis.

Formula

Consumption NRR = Consumption Revenue of the period-start cohort in the twelve-month period / Consumption Revenue of the same cohort in the prior twelve months × 100

Computable definition

The canonical formula in the GASP formula grammar. The MCP server compiles it to SQL over the datasets listed below.

metric.consumption_revenue / lag(metric.consumption_revenue, 12 month) over cohort(field.customer_id, period_start)

Unit: percent (the formula yields an unscaled ratio)

Notes: The cohort's consumption revenue over the period divided by the same cohort's consumption revenue in the twelve months before, on a twelve-month period: year two over year one, Snowflake's basis. A customer in the cohort that consumed nothing in the period counts at zero. A second basis beside NRR, which reads MRR movements; a company reporting this figure names it as such rather than as NRR.

Data requirements

Grain: Customer cohort at period start · Frequency: Monthly · Aggregation: cohort (trailing 12 months) · Staged: yes, a cohort or prior-period comparison that a staged dataset makes cheaper · Main source: Billing.

Field Dataset Type
credit_amount credit_event decimal
credit_event_type credit_event string
customer_id credit_event string
customer_id customer string
customer_status customer string
event_date credit_event date
snapshot_date customer date
Example SQL (Postgres)
SELECT (CAST(((-(SELECT COALESCE(SUM(credit_amount), 0) FROM credit_event WHERE event_date >= :period_start AND event_date <= :period_end AND credit_event_type = 'consumption' AND customer_id IN (SELECT customer_id FROM customer WHERE snapshot_date = :period_start AND customer_status = 'active')))) AS DOUBLE PRECISION) / NULLIF(((-(SELECT COALESCE(SUM(credit_amount), 0) FROM credit_event WHERE event_date >= (:period_start - INTERVAL '12 month') AND event_date <= (((:period_end + INTERVAL '1 day') - INTERVAL '12 month') - INTERVAL '1 day') AND credit_event_type = 'consumption' AND customer_id IN (SELECT customer_id FROM customer WHERE snapshot_date = :period_start AND customer_status = 'active')))), 0)) AS consumption_net_revenue_retention

From an agent: with the GASP MCP server, call lookup_metric({ "name": "Consumption Net Revenue Retention" }) or generate_query({ "metric": "Consumption Net Revenue Retention", "adapter": "<your adapter JSON>" }).

What It Tells You

Whether the customers you had a year ago consume more or less today, including the pay-as-you-go customers whom NRR leaves outside its cohort.

Common Mistakes

  • Reporting Consumption NRR as NRR
  • Including customers acquired during the period
  • Measuring over a period shorter than twelve months, where seasonal consumption distorts the ratio

Try searching for:

↑↓navigate↵select