Lineage integrity · rule catalog-large-unused-source
Large dbt sources that nothing references
A Metacenta review checks this under the rule Large ingested sources are referenced. Everything below applies whether or not you ever commission one.
What this rule checks
This rule flags a declared dbt source holding at least 10% of the storage catalog.json measured, when nothing in the project references it. That means no model, exposure, metric or semantic model. At 25% or more we rate it high severity. The rule declines when fewer than 10 relations were measured.
Why it matters
Its ingestion and storage are paid for on every cycle, whether anything reads it or not. If a tool outside dbt reads it, that dependency is undeclared. The next person to change the ingest has no way to find it.
How to fix it
Settle what reads the largest unreferenced sources. Confirm what reads the source. Declare the model or exposure that does, and stop ingesting the table if nothing does.
When it is fine to leave
A raw table kept for audit, replay or a retention period is read rarely by design. So is a landing table another tool reads directly. Tell us which applies, and the finding comes out of your report.
What we need to check it
manifest.json and catalog.json, which dbt docs generate writes. The adapter must report sizes or row counts: Snowflake and BigQuery do, DuckDB does not. The finding is medium confidence, because a reader outside dbt appears in neither file.
Published rules it corresponds to
dbt_project_evaluator, rule fct_unused_sources. Ours checks a subset of what it flags; theirs is stricter. dbt Labs' rule flags every source nothing references. This one flags only those large enough to be a material share of the storage the catalog measured, and only where the adapter reported sizes, so theirs finds strictly more.
This means our check corresponds to their rule. It does not mean the publisher reviewed or endorses it.