Verified 2026-04-25
open source SaaS or self-hosted Open source

Elementary

Elementary Data · Tel Aviv, Israel

The dbt-native observability layer — tests, anomaly detection, and lineage that live inside your dbt project.

Built for

analytics engineer

Pricing

OSS · paid tiers via sales

Founded

2021

Primary cluster

Quality & testing

§01

The verdict

Ideal for

Teams with a mature dbt practice who want observability that runs in the same codebase, on the same schedule, reviewed in the same pull requests. Especially strong for analytics engineers who value "tests as code" and want anomaly detection without leaving the dbt mental model. The OSS version is a credible production tool, not a crippled demo.

Avoid if

Your data problems are upstream of dbt — ingestion issues, streaming, or pipelines written in other tools — in which case a warehouse-side monitor like Monte Carlo or Bigeye will catch more. Also avoid if you need circuit-breaker semantics that halt downstream work mid-pipeline; Elementary reports failures, it doesn't stop them.

Notable strengths

  • Fully open-source core is genuinely production-grade, not a trial ramp to a paid tier
  • Tests live in the dbt project, so they version with the model they test
  • Anomaly detection without the warehouse-side cost model of a pure monitoring tool
  • dbt artifact ingestion gives accurate model-level lineage without extra configuration
  • Active community and weekly releases — unusually responsive to issues for the category

Notable weaknesses

  • Blind to anything that doesn't flow through dbt; ingestion incidents are invisible
  • No circuit-breaker — failures are reported, not prevented from propagating downstream
  • Column-level lineage is limited to what can be derived from dbt manifests; no cross-system tracing
  • No OpenLineage support, which limits interoperability with broader metadata tooling
  • Cloud pricing is not published, making it hard to evaluate against alternatives without a sales call
§02

Capabilities

Quality & testing capabilities

Primary capability · Strength 3/3

test authoring: yaml paradigm: both ml window: 14 days minimum, 30 days recommended
ML anomaly detection
Assertion-based testing
Schema change detection
Freshness monitoring
Volume monitoring
Column profiling
Custom SQL checks
Data contracts enforcement
Circuit breaker
Root cause analysis
Incident management
Runs in CI
Pre-merge diffing
dbt-native

Monitors at

dbt modelwarehouse tablewarehouse column

Alerting channels

slackteamspagerdutyemailwebhook

Lineage & metadata capabilities

Secondary capability · Strength 2/3

granularity: both openlineage: none
Cross-system lineage
Upstream source lineage
Impact analysis
Reverse impact analysis
Historical lineage
Lineage API
Lineage diff

Extraction methods

dbt manifestsql static analysis
§03

Warehouses & integration

Native warehouse support

bigquerysnowflakeredshiftdatabrickspostgresclickhouse
dbt integrationNative
Airflow integrationPlugin
OpenLineagenone
Metadata standardproprietary
API accessfull
Terraform provider
§04

Pricing

Model open core
Published No contact sales required
Pricing unit per seat
Free tier OSS version is fully featured for single-project use. Cloud offering has a free tier; paid tiers require sales contact.
OSS self-host Available
Sales-only tier team plan

What Elementary actually is

Elementary is a dbt package plus a web UI that reads dbt’s own artifacts — manifest.json, run_results.json, sources.json — and turns them into an observability surface: test results over time, freshness and volume anomalies, model-level lineage, and schema change detection. The architecture matters because it constrains what Elementary can and cannot see. Anything dbt touches, Elementary observes. Anything upstream of dbt — Fivetran loads, custom ingestion scripts, raw warehouse tables written by application code — is invisible.

This is a deliberate design choice, not a limitation. The bet is that most analytics-engineer teams spend most of their debugging time inside the dbt graph anyway, and that a tool which lives in the same codebase, runs in the same CI pipeline, and fails the same pull requests is worth more than a more comprehensive tool that lives elsewhere.

Where it fits against the alternatives

Against dbt-expectations and Great Expectations, Elementary is the obvious upgrade path. Both of those are assertion libraries; Elementary is an assertion library plus an anomaly detection engine plus a UI plus an incident workflow. Teams usually adopt Elementary after hitting the limits of manually-authored dbt tests — specifically, the “we can’t pre-specify every failure mode” limit that ML anomaly detection is designed to solve.

Against Monte Carlo, Elementary trades breadth for depth. Monte Carlo monitors the warehouse itself and catches issues regardless of pipeline. Elementary only sees dbt. Teams that move from Elementary to Monte Carlo typically do so when their data platform grows beyond a single dbt project — multiple data teams, ingestion outside dbt, streaming. Teams that stay with Elementary do so because their value is concentrated in the dbt graph and they prefer the cost model of OSS plus a lighter managed tier.

Against Metaplane and Bigeye, Elementary is the code-first, dbt-shaped option. Metaplane and Bigeye are warehouse-native with strong automatic monitoring but less integration with the analytics-engineer workflow. If your team’s gravity is in the dbt project, Elementary feels native. If it’s in the warehouse console, Metaplane/Bigeye feel native. Either preference is defensible.

Against Datafold, there is less overlap than surface appearances suggest. Datafold’s core value is pre-merge diffing — showing what a model change will do to production output before it ships. Elementary’s core value is post-merge monitoring — telling you when production is broken. Mature teams often run both.

Notable gotchas

Anomaly detection requires a training window. The docs recommend 30 days; in practice, highly seasonal tables (weekly patterns, month-end spikes, marketing campaign surges) will produce false positives until the model has seen enough history. Plan for a two-week tuning period.

The OSS version stores its elementary tables in your warehouse, which means warehouse cost. Not much — it’s essentially log data — but worth knowing if you’re on a consumption plan.

Alerts fan out on every test failure by default. Teams that skip the exercise of grouping tests by owner and severity end up with Slack channels that get muted. Budget an afternoon for alert routing configuration before rollout.

How to evaluate it

The honest test: install the OSS package in a staging dbt project, connect it to a real warehouse, and let it run for two weeks. If the anomaly detection surfaces real issues your existing tests didn’t catch, the tool is working for you. If it mostly surfaces false positives on expected seasonality, your data is too irregular for the model and you should look at warehouse-native options instead.

§05

Notable missing capabilities

Circuit Breaker

Halts downstream execution when a test fails — preventing bad data from propagating into marts, ML features, or BI dashboards. Requires tight integration with the orchestrator (Airflow, Dagster, dbt Cloud). Distinct from alerting-only tools which notify after damage is done.

OpenLineage-Native

Emits and consumes OpenLineage events as a first-class citizen rather than via a plugin or adapter. Signals commitment to interoperability with other metadata tooling — Marquez, OpenMetadata, Astronomer, and others can consume the same event stream. Increasingly the differentiator between "open" and "proprietary metadata model" observability platforms.

Pre-Merge Diffing

Compares the output of a model change against production before the pull request is merged — showing row-level and aggregate differences. Shifts data quality left into the development workflow. Datafold is the category-defining tool here; dbt's own cloud offering has added similar capabilities. Requires production-scale compute on a development branch, which has cost implications.

§06

Alternatives & migrations

Common alternatives

Teams typically migrate to