Share an Elementary data report

Elementary sits on top of dbt and answers the question dbt's own output doesn't: not just "did the tests pass" but "is this column behaving the way it did last week". edr report renders all of it into a single HTML file.

Then the file sits on the machine that ran edr, and the analyst who needs it is somewhere else entirely.

Generate the report

pip install elementary-data
dbt deps && dbt run && dbt test   # populates elementary's tables

edr report --file-path elementary_report.html

One file, self-contained, no server.

Publish it

Drag elementary_report.html into the app, or from your orchestrator:

curl -fsS -X PATCH "https://commareports.com/api/v1/reports/$REPORT_ID" \
  -H "Authorization: Bearer $COMMA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --rawfile html elementary_report.html \
        --arg title "Data quality — $(date +%F)" '{title: $title, html: $html}')"

Same id every run. The link in the analytics channel keeps working; the runs behind it accumulate as revisions.

The alternative is a bucket

edr send-report will push to S3, GCS or Azure, and that is a reasonable thing to do if you already have the bucket, the lifecycle policy, the CDN and somebody who remembers how the IAM policy was written. For a single HTML file that changes once a day, it is a lot of infrastructure to own — see hosting an HTML file for the general version of this trade-off.

What the analysts get

  • Anchored threads on the failing test — "the vendor's Sunday batch lands late, this freshness failure is expected" — attached to the test rather than re-explained every Monday. See commenting on HTML.
  • Revisions, so "when did this column start drifting" is answerable.
  • A routine if you want the report regenerated and republished on a schedule.
  • Access per report — data quality reports name your tables; keep them team-scoped. See the sharing model.

Limits

  • Entry HTML: 5 MB. Assets: 25 MB per file, 250 MB and 500 files total. A project with thousands of models can produce a large single file — scope the report with --select if it approaches the entry cap.
  • 60 requests/minute per token.

Try it

Comma is free — unlimited reports, unlimited commenters, unlimited revision history.

Publish a data report →

Related