ModelUnit economicsForecastingExplainable math

Showback Cost Model

Generic methodology to define unit costs and translate telemetry volumes into spend forecasts—with scenario overlays to evaluate optimizations and governance decisions.

What this model answers

Translate growth → spend
If you can forecast volumes (telemetry), you can forecast spend using stable unit costs.
Separate growth from efficiency
Totals can rise with adoption. Unit costs reveal whether the platform is getting better or worse.
Prioritize the right optimizations
Changes should target the real driver (scan, runtime, retention footprint), not guesswork.
Make conversations actionable
Allocation dimensions + unit costs support credible customer discussions and accountability.

Telemetry + cost attribution

Telemetry provides the denominators (TB ingested, query minutes, GB scanned). Cost attribution provides the numerators (spend mapped to buckets and allocation dimensions).

Without both, you can’t link behavior to spend—so you can’t credibly talk to customers, and you risk building the wrong optimizations.

Method

Step 1 — Define cost buckets and drivers

  • Choose a small set of explainable buckets: ingestion, storage, query, shared overhead.
  • Choose measurable telemetry drivers: TB ingested, TB-months, query minutes, GB scanned.
  • Confirm bucket-to-driver mapping is stable and reviewable.

Step 2 — Compute baseline unit costs

  • Use recent history in a rolling window (e.g., last 2–3 months).
  • UnitCost = SpendBucket ÷ DriverVolume.
  • Treat early variance as expected; trend stability matters more than one month.

Step 3 — Forecast volumes from telemetry

  • Forecast driver volumes using trend + known step-changes (new tenants, new regions).
  • Forecast each driver separately (ingestion vs query behave differently).

Step 4 — Forecast spend (do-nothing scenario)

  • SpendForecast = ForecastVolume × UnitCost (per bucket).
  • Add shared overhead separately if it does not scale linearly with drivers.

Step 5 — Apply scenario overlays

  • Retention reduces TB-months (storage driver).
  • Indexing and query tuning reduce GB scanned and/or query minutes.
  • Compaction can improve both storage footprint and query efficiency.

Step 6 — Publish showback views

  • Allocate spend across dimensions (team/product/dataset) using consistent mappings.
  • Ensure drill-down paths exist from owner → driver → raw usage → cost bucket.

Unit cost definitions

Metric
Definition
Notes
Cost per TB ingested
Ingestion spend ÷ TB ingested
Use for ingestion efficiency + growth-to-spend translation.
Cost per TB stored
Storage spend ÷ TB-months (avg retained TB in month)
Use for retention/tiering impacts and storage footprint control.
Cost per query minute
Query spend ÷ total query runtime minutes
Use for engine efficiency and workload mix changes.
Cost per GB scanned
Scan spend ÷ GB scanned
Useful when scan-based pricing dominates query costs.

Assumptions and constraints

  • Unit costs are directional. Use trend direction and stability, not one-month precision.
  • Re-baseline after step-changes (pricing model shifts, engine migration, major architecture changes).
  • Keep cost buckets explainable and consistently mapped to allocation dimensions.
  • Use a rolling window (e.g., last 2–3 months) to smooth noise while staying current.
Formulas (copy/paste)

Baseline unit costs

For each bucket b and driver d:
  UnitCost[b] = Spend[b] / Volume[d]

Examples:
  UnitIngest = IngestSpend / TBIgnested
  UnitStore  = StorageSpend / TBMonths
  UnitQuery  = QuerySpend / QueryMinutes
  UnitScan   = ScanSpend / GBScanned

Do-nothing spend forecast

For forecast month t:
  SpendForecast[b,t] = VolumeForecast[d,t] * UnitCost[b]

TotalForecast[t] = sum_b( SpendForecast[b,t] ) + SharedOverhead[t]

Scenario overlay (illustrative)

Retention:
  TBMonthsScenario[t] = TBMonthsBaseline[t] * (1 - retention_reduction_pct)

Indexing / tuning:
  GBScannedScenario[t] = GBScannedBaseline[t] * (1 - scan_reduction_pct)
  QueryMinutesScenario[t] = QueryMinutesBaseline[t] * (1 - runtime_reduction_pct)

Scenario total

Replace baseline volumes with scenario volumes:
  TotalScenario[t] = sum_b( VolumeScenario[d,t] * UnitCost[b] ) + SharedOverhead[t]

Savings[t] = TotalBaseline[t] - TotalScenario[t]
Note: This page is intentionally generic (no vendor or internal system names). Swap in your platform equivalents as needed.