Metric Range Export — Long (Tidy) CSV (csv)
The same 90 samples as the query_range response, exported one row per observation with both epoch and ISO 8601 timestamps. The long layout every dataframe library prefers, and half of a reshaping pair.
timestamp,iso_time,service,route,p95_seconds
1773737132,2026-03-17T08:45:32.000Z,checkout-api,/api/checkout,0.166204
1773737192,2026-03-17T08:46:32.000Z,checkout-api,/api/checkout,0.141441
1773737252,2026-03-17T08:47:32.000Z,checkout-api,/api/checkout,0.136772
1773737312,2026-03-17T08:48:32.000Z,checkout-api,/api/checkout,0.168444
1773737372,2026-03-17T08:49:32.000Z,checkout-api,/api/checkout,0.127622
1773737432,2026-03-17T08:50:32.000Z,checkout-api,/api/checkout,0.153412
1773737492,2026-03-17T08:51:32.000Z,checkout-api,/api/checkout,0.154508
1773737552,2026-03-17T08:52:32.000Z,checkout-api,/api/checkout,0.106735
1773737612,2026-03-17T08:53:32.000Z,checkout-api,/api/checkout,0.126495
1773737672,2026-03-17T08:54:32.000Z,checkout-api,/api/checkout,0.082202
1773737732,2026-03-17T08:55:32.000Z,checkout-api,/api/checkout,0.155494
1773737792,2026-03-17T08:56:32.000Z,checkout-api,/api/checkout,0.139561
1773737852,2026-03-17T08:57:32.000Z,checkout-api,/api/checkout,0.135436
1773737912,2026-03-17T08:58:32.000Z,checkout-api,/api/checkout,0.154995
1773737972,2026-03-17T08:59:32.000Z,checkout-api,/api/checkout,0.151866
1773738032,2026-03-17T09:00:32.000Z,checkout-api,/api/checkout,0.150899
1773738092,2026-03-17T09:01:32.000Z,checkout-api,/api/checkout,0.128083
1773738152,2026-03-17T09:02:32.000Z,checkout-api,/api/checkout,0.138342
1773738212,2026-03-17T09:03:32.000Z,checkout-api,/api/checkout,0.139304
1773738272,2026-03-17T09:04:32.000Z,checkout-api,/api/checkout,0.164749
1773738332,2026-03-17T09:05:32.000Z,checkout-api,/api/checkout,0.191214
1773738392,2026-03-17T09:06:32.000Z,checkout-api,/api/checkout,0.143099
1773738452,2026-03-17T09:07:32.000Z,checkout-api,/api/checkout,0.189592
1773738512,2026-03-17T09:08:32.000Z,checkout-api,/api/checkout,0.157208
1773738572,2026-03-17T09:09:32.000Z,checkout-api,/api/checkout,0.148432
1773738632,2026-03-17T09:10:32.000Z,checkout-api,/api/checkout,0.134132
1773738692,2026-03-17T09:11:32.000Z,checkout-api,/api/checkout,0.160257
1773738752,2026-03-17T09:12:32.000Z,checkout-api,/api/checkout,0.127851
1773738812,2026-03-17T09:13:32.000Z,checkout-api,/api/checkout,0.136537
1773738872,2026-03-17T09:14:32.000Z,checkout-api,/api/checkout,0.133453
1773737132,2026-03-17T08:45:32.000Z,cart-api,/api/cart,0.020645
1773737192,2026-03-17T08:46:32.000Z,cart-api,/api/cart,0.016746
1773737252,2026-03-17T08:47:32.000Z,cart-api,/api/cart,0.019394
1773737312,2026-03-17T08:48:32.000Z,cart-api,/api/cart,0.024716
1773737372,2026-03-17T08:49:32.000Z,cart-api,/api/cart,0.006921
1773737432,2026-03-17T08:50:32.000Z,cart-api,/api/cart,0.028983
1773737492,2026-03-17T08:51:32.000Z,cart-api,/api/cart,0.019536
1773737552,2026-03-17T08:52:32.000Z,cart-api,/api/cart,0.015584
1773737612,2026-03-17T08:53:32.000Z,cart-api,/api/cart,0.024851
1773737672,2026-03-17T08:54:32.000Z,cart-api,/api/cart,0.021237
1773737732,2026-03-17T08:55:32.000Z,cart-api,/api/cart,0.020219
1773737792,2026-03-17T08:56:32.000Z,cart-api,/api/cart,0.017253
1773737852,2026-03-17T08:57:32.000Z,cart-api,/api/cart,0.015973
1773737912,2026-03-17T08:58:32.000Z,cart-api,/api/cart,0.018263
1773737972,2026-03-17T08:59:32.000Z,cart-api,/api/cart,0.010303
1773738032,2026-03-17T09:00:32.000Z,cart-api,/api/cart,0.028529
1773738092,2026-03-17T09:01:32.000Z,cart-api,/api/cart,0.03657
1773738152,2026-03-17T09:02:32.000Z,cart-api,/api/cart,0.009124
1773738212,2026-03-17T09:03:32.000Z,cart-api,/api/cart,0.026944Specifications
- Rows
- 90
- Columns
- 5
- Layout
- long/tidy
- Series
- 3
- Step Seconds
- 60
- Same Data As
- query_range matrix response
Testing contract
Reference control- Scenario
- Load the CSV and pivot it to one column per service.
- Expected result
- 90 rows reshape into the paired wide export exactly, with 30 timestamps and no missing cell.
What is a .csv file?
CSV (Comma-Separated Values) is a plain-text tabular format where rows are lines and fields are separated by commas, with quoting rules for values that contain delimiters, quotes, or newlines. It has no formal type system and depends on encoding and dialect conventions. It is the most portable format for tabular data exchange.
How to use this file
Use an example CSV to test parsers against quoting and embedded-delimiter edge cases, header handling, encoding detection, and import pipelines into databases or spreadsheets.
How to use this file for testing
“Metric Range Export — Long (Tidy) CSV (csv)” is a deterministic Novus Examples fixture for Observability, CSV parsing, Time-series data. Structured and plain-text telemetry with known timestamps, levels, request identifiers, and error states for testing log ingestion, correlation, dashboards, and alert pipelines.
Documented properties for this file: 90 rows · 5 columns. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Telemetry fixtures use fixed trace IDs, span IDs, and timestamps so ingestion is reproducible run to run. Point your collector, parser, or query layer at the file and assert the documented span tree, metric families, or severity mix; service and host names are invented.
Code examples
import pandas as pd
df = pd.read_csv("metric-range-export-long.csv")
print(df.head())
print(df.dtypes)Related files
- csvSLO Error Budget — 28-Day Burndown Export (csv)A day-by-day burndown of the availability SLO defined in the OpenSLO fixture: achieved ratio, budget consumed and remaining, and one-hour and six-hour burn rates. Consumption is monotonic across the window, which is the invariant a burn-rate chart must not violate.

- promOpenMetrics — Full Document with UNIT, info and stateset (prom)A complete OpenMetrics document — the _total and _created series a counter really has, UNIT metadata, an info metric carrying build metadata and a stateset with exactly one active state — terminated by the mandatory # EOF. This is what the exposition format became once it was standardised.

- promOpenMetrics — Histogram Exemplars Linking to the Trace Fixtures (prom)Histogram buckets carrying exemplars whose trace_id and span_id resolve against the OTLP trace fixtures in this category — the exact-to-example link that turns a latency spike on a graph into a specific request. Five exemplars, each with its own observed value and timestamp.

- jsonOTLP Metrics — Counter Reset on Process Restart (json)A monotonic counter that drops from 94,880 to 1,120 when its process restarts, with startTimeUnixNano changing at exactly that point to mark the reset. Rate calculations that subtract consecutive values without checking the start timestamp produce a large negative rate here.

- jsonOTLP Metrics — Cumulative Temporality (json)Cumulative sums whose start timestamp stays fixed across exports, so every point is the running total since process start. Paired with a delta-temporality twin covering the same window, because converting between the two is a stateful operation that a bridge must get right in both directions.

- jsonOTLP Metrics — Delta Temporality (json)The same 24 hours of cart updates as six delta points, each with its own start and end timestamp covering a four-hour window. The delta twin of the cumulative fixture: summing these must reproduce the cumulative total exactly, and a gap or overlap in the windows is the failure to catch.

Generated by generation/observability.py. Free for any use, no attribution required — license.