Skip to main content
Every run persists a 0.2 record under results/<domain>/<platform>/. The analytics layer flattens those records at read time into four SQL-queryable views, so measurements, findings, cost and time series from any cloud or product are queried the same way — domain and platform are just columns. csbench query (SQL) and any parquet/series read need the [store] extra:
csbench export to CSV/JSONL (for records / measurements / findings) works without it.

The four views

Only records whose record_digest verifies are included (tamper-evident); run plan aggregates are skipped. All four share run_id / domain / task_id / platform, so any join works. records — one row per run:
execution is simulated (a simulated runtime — mock cloud / local-sim / local-process) or live (real cloud), or unknown (migrated records). Simulated and live records are fingerprint-isolated — they get different environment fingerprints and are never pooled/compared. Filter real-cloud data with WHERE execution = 'live'. Cost comes from the pricing enricher (extensions["pricing"], NULL when the run was not priced). It is reported across three dimensions: list_cost_usd (vendor list price), discount_usd (what your discount layer saved), and cost_usd — the net, what finance actually pays.

Pricing: list / discount / net

The pricing enricher is the single cost authority. It multiplies a run’s usage by two independent, pluggable layers:
  • CLOUSIGHT_PRICING_DATA → the public list-price feed (vendor list prices; a small seed ships in the core).
  • CLOUSIGHT_PRICING_DISCOUNTS → your private discount layer (per-provider, optionally per-provider+service, pct, plus a default_pct). net = list × (1 − discount); absent → net == list.
See all three at once:
measurements — one row per scored measurement:
Numeric values go to value_num; label/text values (e.g. recovery_mode = "auto-retry") go to value_str. findings — one row per finding:
series — the high-frequency time series (from each run’s series.parquet):

Examples

Compare a dimension across clouds:
Cost rollup by product and platform (avoid cost as an alias — it is a DuckDB keyword):
Join a scalar to its time series:
Shortcut for a whole table, no SQL:

Exporting for external tools

Write a long table to parquet / csv / jsonl for a notebook or BI tool: