Compared
Elementary vs dbt Tests: What Each Adds to Data Quality
The short answer
dbt tests and Elementary sit on the same foundation but do different jobs. dbt tests are the assertions built into dbt (unique, not_null, accepted_values, relationships, and custom SQL) that run at build time and fail when a rule you wrote is violated; they are free. Elementary is an open-source dbt package (Apache-2.0) that runs inside your dbt project and adds anomaly detection monitors, test-result storage, and a report UI on top of your existing tests, with Elementary Cloud (pricing is quote-only, "talk to us") layering column-level lineage, a hosted UI, and ML monitors that are cloud-only. Both are dbt-bound by design. Neither monitors tables outside dbt, which is where warehouse-wide observability begins. Verified July 2026.
| Dimension | Elementary | dbt tests |
|---|---|---|
| What it is | Built-in dbt assertions | dbt package + hosted cloud on top of dbt |
| Cost | Free with dbt | OSS package free; Elementary Cloud quote-only |
| Catches unknown anomalies | No, only rules you wrote | Yes, anomaly monitors (deeper in Cloud) |
| Report UI | No, results in logs | Yes, Elementary report |
| Column-level lineage | No | Cloud-only |
| Requires dbt | Yes, it is dbt | Yes, by design |
| Monitors tables outside dbt | No | No |
| Alerting to Slack | No, DIY | Yes |
Verdict
The bottom line
Use dbt tests for the business rules you can state; every dbt team should. Add Elementary when you want anomaly monitors, stored results, and a report on top of dbt, with Elementary Cloud if you want a hosted UI and lineage and can accept quote-only pricing. Both stop at the edge of your dbt project. For monitoring every table in the warehouse, dbt or not, with lineage and published pricing, add Dataobservability: five pillars, self-serve, from 99 dollars a month.
dbt tests: the free foundation everyone should use
dbt tests are assertions that live next to your models and run when you build. The generic tests (unique, not_null, accepted_values, relationships), singular tests (any SQL returning failing rows), and packages like dbt-utils and dbt-expectations cover a lot of real data quality, in code, reviewed in pull requests, versioned with the transformation they protect. Source freshness gives you a basic freshness check on raw tables. If you use dbt and you are not writing tests, that is the first thing to fix, before you buy or install anything. The limits are structural: a test only checks what you wrote, runs only when dbt runs, covers only models and sources in your project, and its results land in logs with no UI and no alerting.
Elementary: a UI, storage, and anomaly monitors on top of dbt
Elementary is the natural next step for a dbt team that has outgrown reading test failures in CI logs. The open-source package (Apache-2.0) installs into your dbt project, stores every test and run result in your warehouse, generates a shareable report of test results and model runs, and adds anomaly detection monitors that watch for volume, freshness, and schema changes beyond your hand-written tests. Elementary Cloud adds a hosted UI, Slack alerting, column-level lineage, and more sophisticated ML monitors, priced by conversation rather than a public page. It is genuinely good, and for teams committed to dbt it is one of the cleanest upgrades available.
The shared ceiling: everything must be dbt
Both dbt tests and Elementary are dbt-native by design, which is their strength and their ceiling. They see your dbt models and sources. They do not see the raw loads before dbt, the reverse-ETL outputs after dbt, the tables another team manages, or the warehouse objects that never enter your dbt project. For a team whose entire data estate flows through one dbt project, that ceiling may never bind. For most growing organizations it does: the incident that hits the CFO's dashboard often starts in a table dbt does not own, and neither dbt tests nor Elementary will have been watching it.
Where warehouse-wide observability begins
A standalone observability platform starts from the warehouse, not the dbt project. It connects read-only, discovers every table (dbt or not), learns each one's normal freshness, volume, and distribution, and monitors all of them continuously, with column-level lineage across the whole estate and alerts routed to Slack and PagerDuty. Because Dataobservability is also dbt-native, it reads your manifest and treats your dbt tests and Elementary monitors as signals rather than duplicating them, so the layers cooperate: dbt tests for business rules, Elementary or Dataobservability for anomalies, and warehouse-wide observability for everything outside dbt. Dataobservability publishes its price (99 dollars a month for Starter) and sets up in about 15 minutes, which matters when Elementary Cloud is quote-only.
Questions
Frequently asked questions
What is the difference between Elementary and dbt tests?
dbt tests are the assertions built into dbt that run at build time and fail when a rule you wrote is violated, with results in logs. Elementary is a package that installs into your dbt project and adds anomaly detection monitors, stores test results in your warehouse, and generates a report UI on top of those tests, with Elementary Cloud adding a hosted UI, Slack alerting, and column-level lineage. dbt tests are the assertions; Elementary is the monitoring and reporting layer built around them.
Is Elementary free?
The Elementary open-source dbt package is free and Apache-2.0, and it gives you anomaly monitors, test-result storage, and the Elementary report. Elementary Cloud, which adds a hosted UI, Slack alerting, column-level lineage, and more advanced ML monitors, is quote-only ("talk to us") with no public pricing, though it offers a 30-day trial. For a published price on a standalone platform, Dataobservability starts at 99 dollars a month.
Do I need Elementary if I already have dbt tests?
Not strictly, but it fills real gaps. dbt tests catch the rules you wrote and dump results in logs; Elementary adds anomaly monitors for changes you did not write rules for, stores results you can query, and gives you a shareable report and (in Cloud) alerting and lineage. If you are happy reading test failures in CI logs and only want rule-based checks, dbt tests alone are fine. If you want monitoring and visibility on top, Elementary is the dbt-native way to get it.
What do Elementary and dbt tests both miss?
Both are bound to your dbt project, so both miss the same things: raw tables before dbt, reverse-ETL outputs after dbt, tables another team owns, and any warehouse object outside your dbt DAG. Neither monitors the whole warehouse. A standalone observability platform like Dataobservability connects read-only, watches every table (dbt or not) for freshness, volume, schema, and distribution, and adds warehouse-wide column-level lineage, so it covers what a dbt-bound tool structurally cannot.