# Share an Elementary Data Report — dbt Test Results Without a Host

Canonical: https://commareports.com/share-elementary-report
Published: 2026-09-15

> elementary's edr command writes a single HTML file of dbt test results and anomalies. Publish it to Comma and the analytics team gets a link instead of an S3 bucket.

# 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

```bash
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](https://commareports.com/), or
from your orchestrator:

```bash
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](/host-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](/comment-on-html).
- **Revisions**, so "when did this column start drifting" is answerable.
- **A [routine](/features/routines/scheduled-html-reports)** 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](/docs/sharing).

## 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 →](https://commareports.com/)**

### Related

- [Share dbt docs](/share-dbt-docs) · [Share a Great Expectations data doc](/share-great-expectations-data-docs)
- [Share a Soda-style data quality report](/share-deepchecks-report) · [Share an Evidently report](/share-evidently-report)
- [Share a whylogs report](/share-whylogs-report) · [Scheduled reports](/features/routines/scheduled-html-reports)
