Skip to main content

Export validation results

Goal​

You'll download validation results as a CSV or an Excel workbook (.xlsx) — or print them to PDF — for sharing outside Measured Cloud: pulling a slice into a BI tool, attaching it to an audit ticket, or handing a stakeholder a snapshot without giving them an account. The export honours whatever filters you've set on the surface you're on, so the file matches exactly what's on screen.

The same Export ▾ control now appears on every result surface, so you get one consistent affordance wherever a result or result set is shown:

SurfaceWhereExport scope
Results list/resultsThe filtered list (validation, status, date range).
Reports/validations/reportsThe scoped report (status, date range).
Result detail/results/{id}For a legacy checkpoint result, that checkpoint's runs. For a validation's results, use the Validation run or Validation export instead.
Validation run/results/{id} (a validation rollup)This validation's runs (this run).
Validation/validations/{id}This validation's run history.
Dashboard/The dashboard metrics for the active scope (workspace / team / org) and period.
Anomalies/anomaliesThe anomaly feed, honouring the active per-asset filter.

Each Export ▾ menu offers Excel (.xlsx) and Print / Save as PDF; the result-list surfaces (Results, Reports, the detail pages) also offer CSV (.csv). Excel and CSV are server exports; PDF is the browser's own "Print / Save as PDF" dialog — there's no separate server-rendered PDF (see the print section below). The Dashboard and Anomalies exports are Excel-only: the dashboard is a metrics roll-up (not a row list) and the anomaly feed has no CSV container.

Results with All workspaces selected (/results?scope=org) has no single workspace-scoped export target, so the Export control there is intentionally omitted — export per workspace instead. The dashboard export, by contrast, does cover the org tier: at ?scope=org it downloads the org-wide metrics roll-up (org-admin-tier only).

Prereqs​

  • Workspace viewer role or higher. The export is gated by the same can_view_results permission as the Results list — if you can see the results, you can export them. A billing-only seat cannot.
  • At least one run in the workspace — see Create and run a validation.

Steps​

Export the filtered Results list as CSV or Excel​

  1. Open the Results page. Navigate to Results in the sidebar.

  2. Apply any filters you want in the export. Each column's header filter narrows the list: Result (pass / fail), Validation, Asset (name contains) and Run time (a From / To day range). The export carries these same filters, so a filtered table produces a filtered file.

  3. Click "Export" and pick a format. The Export button is in the top-right of the page header (the same control on every result surface above). Choose CSV (.csv) or Excel (.xlsx). Measured Cloud streams the matching rows as an attachment and your browser downloads it as validation-results-<timestamp>.csv or validation-results-<timestamp>.xlsx.

Both formats carry the same columns and the same rows — only the container differs. Choose Excel when handing the file to a business stakeholder who lives in spreadsheets; choose CSV for a BI tool or warehouse load that wants raw text.

The download is an authenticated request (your session token is attached), so the link isn't shareable on its own — anyone you hand the file to gets the data, not a live endpoint.

Bulk export a date range for ETL​

For a live, refreshable connection rather than a one-off file, point your BI tool at the REST BI feeds instead — see Connect PowerBI or Tableau. The CSV/Excel export below is the right choice for a static snapshot or a one-time warehouse load.

To pull a wider slice for a BI tool or a warehouse load:

  1. Open the Run time column's filter and set its From / To dates to the window you want (e.g. the last calendar month).
  2. Leave the rule-group and status filters on All if you want every run in the window.
  3. Export → CSV (or Excel).

The export is capped at 50,000 rows per request (the same cap for both formats). If your range exceeds it the request returns a 400 asking you to narrow the date range — split a large backfill into a few smaller windows.

Columns​

Both the CSV and the Excel workbook have one row per ValidationResult, with these columns:

ColumnMeaning
run_timeWhen the validation ran (ISO-8601).
checkpointLegacy: the checkpoint name for runs started through the checkpoint API (blank for validation runs).
data_assetThe data asset the run validated, when recorded on the result.
rule_suiteLegacy: the name of the rule suite the run executed. Rule suites were retired, so it is blank for results written since then.
statuspass or fail, derived from the authoritative success flag.
successtrue / false — the raw success flag.
severityThe recorded severity when present, otherwise ok (pass) / critical (fail). (#154 retired the old error tier, folding it up into critical; a legacy stored error also reads back as critical.)
batch_kindLegacy: set only for older partitioned runs (column_partition, interval); blank for every normal run.
partition_valueLegacy: the partition an older partitioned run validated; blank otherwise.
result_idThe result's UUID — use it to deep-link back to the detail page.

The CSV opens with a #-comment preamble carrying the organization id, workspace id, the export timestamp, and the active filter criteria, so a file that's been passed around still says when it was taken and what it was scoped to. Most spreadsheet and BI importers skip # comment lines; if yours doesn't, delete the leading # lines before the header row.

The Excel workbook carries the same metadata as a small labelled block (organization id, workspace id, exported-at, filters) above the table, with the header row frozen so it stays visible while you scroll a large export.

Use the API directly​

The same endpoint backs both formats — add format=xlsx to switch from the default CSV:

GET /api/v1/organizations/{org_id}/workspaces/{workspace_id}/validation-results/export?format=xlsx&status=fail

Omit format (or pass format=csv) for the CSV. All the list filters (rule_group_id, the deprecated checkpoint_id, status, start_date, end_date, …) apply to both.

Export the Dashboard metrics as Excel​

The dashboard's Export ▾ (top-right of the page header) downloads the metrics roll-up the cards read — a compact workbook rather than a row list, since the dashboard is aggregate numbers.

  1. Open the Dashboard (the home page). Pick the scope you want in the workspace switcher and the window you want in the period selector (30 / 60 / 90 days / 1 year). The export follows the active scope and period exactly:
    • a workspace view exports that workspace's numbers;
    • a team filter narrows the numbers to that team's slice (the same asymmetry the cards state — active coverage's total stays workspace-level because assets carry no team);
    • ?scope=org (super admins only) exports the org-wide roll-up across every workspace you can access.
  2. Click Export → Excel (.xlsx). The file downloads as dashboard-metrics-<scope>-<period>d.xlsx.

The workbook has two sheets:

  • Summary — the headline numbers: health_score (the share of rule checks that passed in the period — see Health score), failure_rate, checks_evaluated, checks_failed, pass_rate, total_runs, period_days, scope, and the coverage inputs (coverage_covered / coverage_total / coverage_rate).
  • Breakdown — the pass/fail split (by_status → passed / failed) and the failed-expectation severity counts (severity_counts → critical / warning / info).

The same endpoint backs both tiers:

GET /api/v1/organizations/{org_id}/workspaces/{workspace_id}/dashboard/metrics/export?format=xlsx&period=30[&team_id=...]
GET /api/v1/organizations/{org_id}/dashboard/metrics/export?format=xlsx&period=30

The workspace endpoint takes period and an optional team_id; the org endpoint (super admin only) takes period. format=xlsx is the only container (a typo returns 422).

Export the Anomalies feed as Excel​

The anomalies page's Export ▾ (top-right) downloads the anomaly feed as a workbook, honouring the same per-asset filter the feed shows.

  1. Open the Anomalies page. If you arrived via a data asset's drift badge (/anomalies?asset=<id>), the feed — and the export — are scoped to that one asset; the "Showing anomalies for one data asset" banner has a "Show all" escape.
  2. Click Export → Excel (.xlsx). The file downloads as anomaly-events-<timestamp>.xlsx, one row per anomaly with these columns: metric, data_asset_id, severity, baseline_value, observed_value, z_score, detected_at, and acknowledged (yes / no).

The export is capped at the same 50,000-row limit as the results export; past it the request returns a 400 asking you to filter by asset.

GET /api/v1/organizations/{org_id}/workspaces/{workspace_id}/anomaly-events/export?format=xlsx[&data_asset_id=...]

Save a printable PDF​

PDF export is the browser's own print dialog — there's no separate server-rendered PDF endpoint.

  1. On any surface with an Export ▾ control (Results, Reports, a result detail, a validation, the Dashboard, or the Anomalies feed), open the menu and choose Print / Save as PDF at the bottom.
  2. In the browser print dialog, choose Save as PDF as the destination.

The page carries a print stylesheet, so the PDF is content-only — the left navigation, the top search bar, the footer, the build stamp, and the header's own export/print controls are dropped, and the printed report flows across pages instead of being clipped to one screenful. The filters and active scope you've set still apply, so the PDF matches the on-screen view. For a tabular extract you want the CSV or Excel export; the print-to-PDF path is for a quick visual snapshot to drop into a deck or email.

Verify​

  • Clicking Export → CSV downloads a validation-results-*.csv; Export → Excel downloads a validation-results-*.xlsx.
  • Opening the CSV shows the # preamble, then the header row, then one row per result that was visible under your current filters. The Excel workbook shows the labelled metadata block, then the (frozen) header row, then the same rows.
  • Setting a status filter to Fail and re-exporting yields a file containing only failing runs — both formats track the on-screen list.
  • On the Dashboard, clicking Export → Excel downloads a dashboard-metrics-<scope>-<period>d.xlsx with a Summary and a Breakdown sheet; switching the period selector and re-exporting changes the period_days in the Summary sheet.
  • On the Anomalies page, clicking Export → Excel downloads an anomaly-events-*.xlsx with one row per anomaly; arriving via an asset's drift badge (/anomalies?asset=<id>) and re-exporting yields only that asset's anomalies.